我有这个简单的代码:
function rotatecard(event){
this.parent.parent.className = "rotated";
}
function rotatebutton() {
"use strict";
var cardbutton = document.getElementsByClassName('rotatebutton'), i;
for (i = 0; i < cardbutton.length; i += 1) { bindEvt(cardbutton[i], "click", rotatecard) };
}
但在rotatecard函数中this
报告为未定义。这可能是基本的东西,但有人可能会指出我做错了吗?
编辑:bindevent代码:
var bindEvt = (function () {
"use strict";
if (document.addEventListener) {
return function (element, event, handler) {
element.addEventListener(event, handler, false);
};
}
return function (element, event, handler) {
element.attachEvent('on' + event, handler);
};
}());
答案 0 :(得分:1)
耶。我相信,这可能是指全球窗口。尝试使用
event.target
如果您需要捕获点击的元素
答案 1 :(得分:1)
如果您想要事件目标,则可以通过event.target
。
如果要访问定义处理程序的此对象,请使用Function.prototype.bind
bindEvt(cardbutton[i], "click", rotatecard.bind(this))