所以,如果你有一個帶有參數的命名函數並且調用該函數,那麼在使用addEventListener時它不能正常工作,但是如果你將它包裝在一個匿名函數中,那麼它工作,爲什麼?爲什麼在傳遞參數時你必須在addeventlistener中有一個匿名函數?
<input type="button" value="click me" id="subBtn" /> <br />
<div id="myDiv">default text</div>
這是我的JavaScript。
function myFunc(str){
document.getElementById("myDiv").innerHTML = str;
}
//does not work.
document.getElementById("subBtn").addEventListener("click", myFunc("hey there buddy"), false);
//this works, but why?
document.getElementById("subBtn").addEventListener("click", function(){
myFunc("hey there buddy");
}, false);
現在,如果myFunc沒有使用任何參數,那麼這兩種方式都可以。
第二個參數是對函數的引用,在第二個示例中是直接觸發函數。'addEventListener(「click」,myFunc,false);'會工作,訣竅是通過它傳遞一個參數。 – 2015-04-02 22:53:45
要添加到上面的註釋中,您正在執行'myFunc()'並將該函數的* result *('undefined')傳遞給'addEventListener'。 – 2015-04-02 23:01:42