为什么切换功能不能按预期工作?

时间:2013-04-16 12:35:36

标签: javascript

我是javascript的新手,我开始编写一个小脚本的简单任务。我希望通过切换按钮点击显示字符串......

<!DOCTYPE html>
<html>
<body>


<button onclick="foo()">Foo</button>
<button onclick="toggle()">Toogle</button>
<p id="demo"></p>


<script>
     var toggle = false;//set the desired initial value to toggle flag
     var x = "";

     function toggle() {
         alert("ENTERED Toggle");
         toggle = !toggle;
         x= toggle? "Toggle set to true. " : "";
     }

     function foo() {`enter code here`
         alert("ENTERED Foo");
         var y = "Food pressed";
         y = x + y;
        document.getElementById("demo").innerHTML=y; // display the x value
     }
</script>

</body>
</html>

预期:当仅点击foo时,会显示警告框,然后单击“确定”,只需显示“Foo按下”。应该显示。单击切换一次然后单击foo然后“切换设置为真。按下Foo”{此过程中出现两个警报}将显示并再次按下切换按钮并按下切换切换标志切换foogle并且只有“Foo按下”。显示,它遵循如此.....

实际结果:只有foo click工作,切换点击根本不起作用。

有人可以对此有所了解吗?

1 个答案:

答案 0 :(得分:2)

你有冲突的名字。 toggle函数替换toggle变量。这是因为在ECMAScript(Javascript)中,可以通过不添加括号来传递函数,也就是说函数是first-class citizen

这方面的一个例子:

x = alert; //"x" is now the same function as "alert"
x("Hej");

因此,toggle函数的定义等同于此赋值:

var toggle = function() {
  alert("ENTERED Toggle");
  toggle = !toggle;
  x= toggle? "Toggle set to true. " : "";
}

解决方案是给函数或变量另一个名称。