0

过去我用 javascript 编写过很多代码,所以当我盯着这么简单的东西看几个小时却不知道为什么它不起作用时,这尤其令人沮丧。有人能告诉我为什么这段代码完全没有响应吗?

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var passCode = 0;

function oneFunc()
{
    passCode = 1;
}
function oneFunc()
{
    passCode = 2;
}
function oneFunc()
{
    passCode = 3;
}
function oneFunc()
{
    passCode = 4;
}

if(passCode == 1)
{
    if(passCode == 2)
    {
        if(passCode == 3)
        {
            if(passCode == 4)
            {
                window.location.href = 'frompassCode.html';
            }
        }
    }
}
</script>
<title> </title>
</head>

<body>

<button onclick="oneFunc()">Button1</button><br/>
<button onclick="twoFunc()">Button2</button><br/>
<button onclick="threeFunc()">Button3</button><br/>
<button onclick="fourFunc()">Button4</button><br/>

</body>
</html>

如果我的逻辑不正确,我可以处理它,但它不会做任何事情。我在函数中设置了一个警报让它移动,但没有。我敢肯定这个问题一定很简单......

4

3 回答 3

3

if 语句不应嵌套。如果 passCode 是 1,它不可能是 2,那么如果你已经知道它的 1,为什么还要检查它呢?此外,所有东西都被命名为 onefunc.. 它们需要有唯一的名称。

于 2012-06-14T04:02:56.397 回答
0

除了 oneFunc() 被多次声明并且 if 语句的逻辑永远不会起作用的事实之外,Javascript 被线性解释的事实是问题所在。如果你看一下代码:

<script type="text/javascript">
var passCode = 0;

function oneFunc()
{
    passCode = 1;
}
function oneFunc()
{
    passCode = 2;
}
function oneFunc()
{
    passCode = 3;
}
function oneFunc()
{
    passCode = 4;
}

if(passCode == 1)
{
    if(passCode == 2)
    {
        if(passCode == 3)
        {
            if(passCode == 4)
            {
                window.location.href = 'frompassCode.html';
            }
        }
    }
}
</script>

此代码在 HTML 文档加载到浏览器时执行。首先,它将变量 passCode 设置为 0。然后它通过(并且可能有问题)声明所有函数。然后它遍历 if 语句并执行它们,因为它们不在函数中。任何不在函数中的 Javascript 代码都会立即在页面下方线性执行。这意味着您的 if 语句将永远不会再次执行。你可以随意点击按钮,它们显然会改变 passCode 的值,但 if 语句将永远不会再次执行,因为它们是全局代码。您可能必须将 if 语句放在一个新函数中,并始终在 oneFunc() 调用之后调用该函数。

于 2012-06-14T04:26:09.270 回答
0

您的函数声明都被命名为相同的东西。尝试做这样的事情:

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var passCode = 0;

function oneFuncToRuleThemAll(val)
{
    passCode = val;


  switch (passCode){
     case 1:
        // Do stuff...
        break;
     case 2:
        // Do other stuff...
        break;
     case 3:
        // You get the idea.
        break;
     case 4:
        window.location.href = 'frompassCode.html';
  }
}

</script>
<title> </title>
</head>

<body>

<button onclick="oneFuncToRuleThemAll(1)">Button1</button><br/>
<button onclick="oneFuncToRuleThemAll(2)">Button2</button><br/>
<button onclick="oneFuncToRuleThemAll(3)">Button3</button><br/>
<button onclick="oneFuncToRuleThemAll(4)">Button4</button><br/>

</body>
</html>
于 2012-06-14T04:02:53.543 回答