下面的代码代表了我想要实现的想法,但是当我测试它不起作用时,测试 q1 和 q2 是否等于 true 的适当方法是什么?
function processForm() {
if(q1_valid = true && q2_valid = true){
alert("yes");
} else {
alert("no");
}
}
下面的代码代表了我想要实现的想法,但是当我测试它不起作用时,测试 q1 和 q2 是否等于 true 的适当方法是什么?
function processForm() {
if(q1_valid = true && q2_valid = true){
alert("yes");
} else {
alert("no");
}
}
当您=
在 javascript(和大多数类似 C 的语言)中使用 simple 时,会发生什么是您分配变量,然后返回所述分配的结果。
以代码为例a = b = true
。这可以拆分为a = (b = true)
. 现在,如果我们只看括号内的部分,你会发现它首先将 b 设置为 true,然后返回 b。然后,在括号之外,它将 a 设置为 b 的任何值(原因是true
),并返回 a 的值。a 的值无处可去,所以它被简单地丢弃了。
现在,如果我们回到你的 if 测试,你最终得到的基本上是这样的:
q1_valid
为true
。true
(q1_valid 的值)返回给&&
操作员。true
是有效的,&&
所以它看起来在右手边。q2_valid
为true
。true
_&&
&&
现在true
两边都有。退货true
。测试总是通过。q1_valid
并且q2_valid
总是true
在测试运行之后。
简单的解决方案是替换=
为==
(equals) 或===
(type and value equals)。您的 if-check 应如下所示:
1.
if(q1_valid == true && q2_valid == true)
2.
if(q1_valid === true && q2_valid === true)
此外,由于使用布尔值(值是真或假),因此可以完全省略检查是否等于真。另一种方法就是这样:
if(q1_valid && q2_valid)
这里有两个问题:
您需要使用两个等号进行比较==
函数中不存在变量,调用函数时需要将它们作为参数传递
function processForm(q1_valid, q2_valid) {
if(q1_valid == true && q2_valid == true){
alert("yes");
} else {
alert("no");
}
}