我正在使用计算器应用程序,并且给每个按钮一个与它们的数字或字符相对应的值。
我有一个if条件,该条件应该检查用户是否单击了除“ C”或“ del”(删除)按钮以外的任何按钮。如果他们确实单击“ C”或“ del”按钮,则不会在userInput或显示中都未添加任何值。
我遇到的问题是,即使单击“ C”和“ del”,if语句仍然会执行。
let userInput = '';
const display = document.querySelector('.display');
const buttons = document.querySelectorAll('input[type="button"]');
for (let button of buttons) {
const value = button.value;
if (value !== "C" || value !== "del"){
button.addEventListener("click", function(){
userInput+=value;
display.innerHTML += value;
console.log(button.value);
});
}
}
[我认为人们已经很清楚地说明了您进行if陈述的方式,它总是会成为事实,因为它不是'C'还是不是'del'总是正确的'。
但是,我想我会添加另一种方法:使用数组,并使用array.includes
函数
const badValues = ['C', 'del'];
if (badValues.includes(value)) {
// value is either C or del
} else {
// value is not C or del
}
您需要使用AND运算符,因为它不应为'C'和'del']
value != "C" && value != "del"
您需要一个logical AND &&
运算符,因为两个条件都必须为真。
&&
如果我们在这里写出布尔真值表,很容易看到发生了什么:
value !== "C" && value !== "del"
将其设为+----------+------------------+--------------------+--------+
| value | value != "C" (A) | value != "del" (B) | A || B |
+----------+------------------+--------------------+--------+
| "C" | false | true | true |
| "del" | true | false | true |
| "banana" | true | true | true |
+----------+------------------+--------------------+--------+
的唯一方法是,如果A和B条件都为false
,但是这将要求false
同时为value
和"C"
。对于字符串,这是不可能的。因此,由于使用了逻辑或,因此无论输入如何,输出始终为"del"
。
相反,实际上要使用逻辑AND:
true