Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么切换功能不能按预期工作?_Javascript - Fatal编程技术网

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

Javascript 为什么切换功能不能按预期工作?,javascript,Javascript,我对javascript非常陌生,我从编写一个小脚本的简单任务开始。。在这里,我希望通过切换按钮点击来显示字符串 <!DOCTYPE html> <html> <body> <button onclick="foo()">Foo</button> <button onclick="toggle()">Toogle</button> <p id="demo"></p> <scr

我对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>

福
图格尔

var-toggle=false//将所需的初始值设置为切换标志 var x=“”; 函数切换(){ 警报(“输入切换”); 切换=!切换; x=切换?“切换设置为真。”:“”; } 函数foo(){`在此处输入代码` 警报(“输入Foo”); var y=“食品压榨”; y=x+y; document.getElementById(“demo”).innerHTML=y;//显示x值 }
预期:当仅单击foo时,将显示警报框,单击“确定”,只应显示普通的“foo pressed.”。单击切换一次,然后单击foo,则会显示“切换设置为true。foo按下“{此过程中发生两个警报}”,再次按下切换,然后按下foo。切换标志为切换,仅显示“foo按下”。随后

实际结果:只有foo-click起作用,而toggle-click根本不起作用


有人能解释一下吗?

你的名字不一致。
toggle
函数替换
toggle
变量。这是因为在ECMAScript(Javascript)中,可以通过不添加括号来传递函数,也就是说函数是空的

这方面的一个例子是:

x = alert; //"x" is now the same function as "alert"
x("Hej");
因此,您对
切换
功能的定义等同于此分配:

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

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

您询问过浏览器的调试器了吗?-F12代表IE,Ctrl-Shift-I代表FF、Chrome和Opera。请学习。维克斯特罗姆:非常感谢。现在可以了。我不知道我不能有一个函数和一个同名的变量。。。