在不使用HTML属性的情况下挂钩到onClick事件

时间:2011-05-27 20:03:13

标签: javascript html

我想将我的JavaScript和HTML代码分开。为此,我想确保我从不使用以下语法:

<input type="text" name="text" onClick="javascript:onClick(this)" />

但我想挂钩onClick事件,例如上面的输入,但不必在其HTML中使用onClick属性。此外,我想使用原始JavaScript而不是像jQuery或MooTools这样的框架来保持它的实现不可知(虽然,如果你希望将这些作为插图以及原始JavaScript提供,那也很好。)

<input type="text" name="text" />

3 个答案:

答案 0 :(得分:14)

要使用JavaScript,首先,您必须向要追加事件的元素添加ID。这是因为它使您可以轻松理解代码并避免在编写代码时出现混淆。因此,HTML行将如下所示:

<input type="text" name="text" id="myInputType1" />

每个元素必须不超过一个id,这在整个文档中是唯一的。现在,添加事件有三种主要方式:

/* First */
document.getElementById("myInputType1").onclick = function(){
    /*Your code goes here */
};

/* Second */
function Func(){
    /*Your code goes here */
}
document.getElementById("myInputType1").onclick = Func;

/* Third */
function Func(){
    /*Your code goes here */
}
document.getElementById("myInputType1").addEventListener("click", Func, false);

最后一个的优点是你可以随意添加“click”(或“mouseover”,...)事件,并且可以逐个删除它们。但它不适用于IE&lt; 9。相反,你必须使用:

document.getElementById("myInputType1").attachEvent("onclick", Func);

jQuery方式:

$("#myInputType1").click(function(){
    /*Your code goes here */
});

答案 1 :(得分:4)

通过为您的输入元素分配ID,您可以轻松(并且有效地)使用原始javascript访问它

<input type="text" name="text" id="myInput" />

在单独的javascript中:

var input = document.getElementById("myInput");

input.onclick = function() {alert("clicked");}

显然你会做一些比onclick功能中的警报更有用的东西......

答案 2 :(得分:1)

如果您提供元素和ID,则可以执行以下操作:

var el = document.getElementById("text");
el.addEventListener("click", function(/*put code here*/) {}, false);