查看我的代码 http://jsfiddle.net/kxATT/3/
function byId(id) {
if (id) {
return document.getElementById(id);
} else {
return null;
}
}
function setAttr(elm, attr, value) {
elm.setAttribute(attr, value);
}
var app = {
id: 12,
fn: function () {
alert(this.id);
}
};
function init() {
setAttr(byId('txt'), 'onclick', 'app.fn()');
byId('txt1').addEventListener('click', app.fn, true);
}
单击第一个框时,它会发出警报12
。而对于第二个盒子,它会发出警报txt1
。显然在这两种情况下,虽然我调用的是同一个函数,但this
指的是不同的对象。我听说,对于输入元素,元素的对象本身被传递给函数并this
在事件处理函数内部被引用。如果是这样,为什么使用 setAttribute 添加事件时不正确。