繁体   English   中英

这个 JavaScript if 语句有什么问题?

[英]Whats wrong with this JavaScript if statement?

当用户在文本框( KeyCode === 13 )中按下 Enter 键时,该函数会运行,但我无法让它与searchButton一起searchButton

function myFunction(e) {
    if(e.keyCode === 13 || document.getElementById("searchButton").click()){
        e.preventDefault();
        var searchValue = document.getElementById("mySearch").value;
        for(var i = 0; i < users.length; i++){
        if(users[i]['last_name'] === searchValue){
        document.getElementById("return").innerHTML = JSON.stringify(users[i]);
        return;
        }
     }  
  }
}

<input type="search" id="mySearch"  onkeypress="myFunction(event)" />
<button id="searchButton" onclick="myFunction(e)">SEARCH</button>

问题是|| 表达? 该函数应该在用户按下searchButton或按下 Enter searchButton时运行。

document.getElementById("searchButton").click()的调用是一种模拟点击的编程方式。

你可能的意思是:

function myFunction(e) {
    if((e.target.id === 'mySearch' && e.keyCode === 13) || e.target.id === 'searchButton'){

    }
}

好的,所以当你按下回车键时, myFunction会被一个具有 keyCode 属性的事件调用,所以这一切都很好。

但是,当您单击按钮时,该事件没有 keyCode 属性,因此您的条件document.getElementById("searchButton").click()的右侧会运行。 click是一种模拟 mouseclick的方法,返回 undefined。 所以条件解析为false,函数体的其余部分将不会运行。

您可以改为检查事件的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM