我是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工作,切换点击根本不起作用。
有人可以对此有所了解吗?
答案 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. " : "";
}
解决方案是给函数或变量另一个名称。