它类似于onclick 方法,实际上使用相同的事件处理程序,但从 HTML 中删除:
document.getElementById('myButton').onclick = function(){
// do stuff
myFunction();
}
如果元素上没有id,也可以使用:
var inputs = document.getElementsByTagName('input');
for (var i=0, len=inputs.length; i<len; i++){
if (inputs[i].type == 'text'){
// assuming you want to affect text-inputs in this case
inputs[i].onclick = function(){
// do stuff. In here 'this' refers to inputs[i] element
myFunction();
};
}
}
另一种方法,使用Array.prototype.forEach(),使用Array.prototype.slice() 和document.querySelectorAll() 创建一个元素数组:
[].forEach.call(document.querySelector('input[type="text"]', yourFunctionName);
这将为type="text" 中的每个<input /> 元素执行yourFunctionName() 函数,由document.querySelectorAll() 返回,将该<input /> 元素作为this 传递给函数。
在这种情况下,您也可以使用addEventListener():
document.getElementById('myButton').addEventListener('click', myFunction, false);
同样在这种情况下,使用document.querySelector()(而不是document.querySelectorAll()),它返回第一个匹配传入选择器的元素,使用CSS表示法:
// gets the element with an 'id' of 'myButton', binding the 'click' event-handler:
document.querySelector('#myButton').addEventListener('click', myFunction, false);
或者:
// gets the first of the <input> elements, binding the 'click' event-handler:
document.querySelector('input').addEventListener('click', myFunction, false);
参考资料: