[英]Why won't a simple Javascript if condition execute?
<!DOCTYPE html>
<html>
<body>
<button onClick="Display()"></button>
<script>
function Display() {
var a = 0;
if(a = 0){
alert("hello world");
}
}
</script>
</body>
</html>
我运行页面并单击按钮,但没有任何反应。 我无法为自己的生命找出原因...
编辑:另一方面,即使我没有定义var CorrectActivities,此代码也无论执行什么:
function Display() {
if(CorrectActivities = 3) {
document.getElementById("ActivitiesResult").innerHTML = '<span>style="color:DarkGreen;font-weight:bold;font-size:30px;">3 out of 3 correct!</span>';
} else if (CorrectActivities = 2) {
document.getElementById("ActivitiesResult").innerHTML = '<span style="color:Crimson;font-weight:bold;font-size:30px;">2 out of 3 correct!</span>';
} else if (CorrectActivities = 1) {
document.getElementById("ActivitiesResult").innerHTML = '<span style="color:Crimson;font-weight:bold;font-size:30px;">1 out of 3 correct!</span>';
} else {
document.getElementById("ActivitiesResult").innerHTML = '<span style="color:Crimson;font-weight:bold;font-size:30px;">0 out of 3 correct!</span>';
}
}
Edit2:感谢您的答案。 无论我尝试什么,第一个代码都是固定的,第二个代码仍然是坏的。 要在脚本中的其他位置查找错误...
比较值时,应使用==
(等于)或===
(等于和相同类型)。 =
仅用于设置变量值。
<!DOCTYPE html> <html> <body> <button onClick="Display()"></button> <script> function Display() { var a = 0; if(a == 0){ alert("hello world"); } } </script> </body> </html>
对于您的另一个代码,我创建了一个jsfiddle 。 与第一部分中的问题相同,比较运算符错误。 如果没有声明CorrectActivities
,它将无法运行。 我修复了它(就像在第一部分中一样),声明了变量,并添加了三个按钮来测试所有情况,它似乎可以工作。
在第3种情况下,您也有小的错别字,在<span>style
有一个额外的结束括号
a = 0
表示分配不是有效条件。 a == 0
, a === 0
或!a
都a === 0
您的需求。
与CorrectActivities
相同,请使用CorrectActivities == 3
而不是CorrectActivities = 3
。
在javascript中=
分配一个值并返回它, ==
或===
比较值
第一部分不会执行,因为:
Display
被叫 if(a = 0)
评估为if(0)
,即javascript if(false)
所以里面的代码if
将不会运行。 你想要的是if(a == 0)
:
function Display() { var a = 0; if (a == 0) { alert("hello world"); } }
<button onClick="Display()"></button>
对于第二部分, if(CorrectActivities = 3)
将是if(3)
,这将是javascript if(true)
因此它将始终运行。 再次,您想要使用==
运算符:
function Display () {
if ((CorrectActivities == 3)) {
document.getElementById('ActivitiesResult').innerHTML = '<span>style="color:DarkGreen;font-weight:bold;font-size:30px;">3 out of 3 correct!</span>'
} else if ((CorrectActivities == 2)) {
document.getElementById('ActivitiesResult').innerHTML = '<span style="color:Crimson;font-weight:bold;font-size:30px;">2 out of 3 correct!</span>'
} else if ((CorrectActivities == 1)) {
document.getElementById('ActivitiesResult').innerHTML = '<span style="color:Crimson;font-weight:bold;font-size:30px;">1 out of 3 correct!</span>'
} else {
document.getElementById('ActivitiesResult').innerHTML = '<span style="color:Crimson;font-weight:bold;font-size:30px;">0 out of 3 correct!</span>'
}
}
这是因为没有分配比较,而是分配了它。
因此,语句if(a = 0)总是正确的。
使用==代替=。
function Display() {
var a = 0;
if(a = 0){
alert("hello world");
}
}
这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.