2017-03-27 121 views
1

为什么在不点击指定按钮的情况下会触发此函数? 我看了一些类似的问题,但没有处理这个代码结构(可能是这个IM缺失的明显原因...)。javascript click事件处理程序触发时不点击

document.getElementById("main_btn").addEventListener("click", hideId("main"); 

function hideId(data) { 
    document.getElementById(data).style.display = "none"; 
    console.log("hidden element #"+data); 
} 

在此先感谢!

+0

使用HTML的onClick标签,我应该张贴一个答案? –

回答

1

你直接调用它。

document.getElementById("main_btn").addEventListener("click", hideId("main"); 

你应该在回调中做到这一点。

document.getElementById("main_btn").addEventListener("click", function(){ 
    hideId("main"); 
}); 
+0

这工作,谢谢!这一切都有道理,我看到这个解决方案来了几次,但我不明白为什么你必须在另一个函数内调用函数。但我猜你是在告诉事件处理程序在单击后执行该功能,而不是将它放在那里以便自己执行。 –

+0

@MarkVonk你已经正确地理解了它。 –

1

此代码执行的功能hideId("main")你应该通过只是回调的名字:

document.getElementById("main_btn").addEventListener("click", hideId); 

function hideId(event) { 
    var id = event.target.srcElement.id; // get the id of the clicked element 
    document.getElementById(data).style.display = "none"; 
    console.log("hidden element #"+data); 
} 
0
document.getElementById("main_btn").addEventListener("click", hideId.bind(null, "main"); 
+1

虽然此代码可能会回答问题,但提供有关如何解决问题和/或为何解决问题的其他上下文可以提高答案的长期价值。 –

+0

这是真的.... –