Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 btn.getAttr('id')上带有| |的if语句始终返回true_Javascript - Fatal编程技术网

Javascript btn.getAttr('id')上带有| |的if语句始终返回true

Javascript btn.getAttr('id')上带有| |的if语句始终返回true,javascript,Javascript,通过js,我一直在检索html页面上按钮的ID 并将它们传递给一个改变字符串的函数。该函数包含一个if语句,当单击某些按钮时,该语句应取消,但函数从不停止 这是我的代码: let buttons = document.querySelectorAll("button") buttons.forEach(function(btn) { btn.addEventListener('click', () => { if (btn.getAttribute('id') !=

通过js,我一直在检索html页面上按钮的ID 并将它们传递给一个改变字符串的函数。该函数包含一个if语句,当单击某些按钮时,该语句应取消,但函数从不停止

这是我的代码:

let buttons = document.querySelectorAll("button")
buttons.forEach(function(btn) {
    btn.addEventListener('click', () => {
        if (btn.getAttribute('id') != "reset" || btn.getAttribute('id') != "equals") {
            //Do something
        }
    })
})
问题是,即使当btn==reset或等于的id时,函数仍然会执行。我知道id的接收工作正常,因为我通过在js中记录按钮id来测试单击时发生的情况

此代码工作正常,但重复,不使用or运算符:

let buttons = document.querySelectorAll("button")
buttons.forEach(function(btn) {
    btn.addEventListener('click', () => {
        if (btn.getAttribute('id') != "reset") {
            if (btn.getAttribute('id') != "equals") {
            console.log(btn.getAttribute('id'))
            document.getElementById("content").textContent += btn.textContent
    }
}})
})

当id的值为reset或equals时,我希望函数不会通过。我知道问题在if语句中的某个地方,但我无法解决。

问题是OR运算符。您应该改用AND运算符。
比如说,当点击btn reset时,第一个条件返回false,但第二个条件的计算结果为true,因此if语句执行。

在Barmar上将| |更改为&&.+1。。。添加新的!a或!b正在使它成为一种通用门。它应该是任意一种!a或b或!a和!buse&&,哦,将getAttribute存储在一个变量中,使事情更具可读性。