过去我用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>
如果我的逻辑关闭,我可以处理,但它不会做任何事情。我在函数内部发出警报以使其移动,但没有。我确定这个问题必须简单......
答案 0 :(得分:3)
不应嵌套if语句。如果passCode是1,它不可能是2,那么如果你已经知道它的1,你为什么要检查呢?此外,一切都被命名为onefunc ..他们需要有唯一的名称。
答案 1 :(得分: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>
答案 2 :(得分: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()调用之后调用该函数。