Javascript类名称操作不起作用
这个问题在这里已经有了答案:
你应该用“绑定”来调用你的函数来保持“this”的范围。
window.setTimeout(
function(){
this.className = 'closeMenuButtonNotActive';
}.bind(this),
500);
这是因为this
是关于这个函数的window
:
window.setTimeout(function() {
// Wrong this
this.className = 'closeMenuButtonNotActive';
},500);
相反,你可以这样做
var elem = this;
window.setTimeout(function() {
elem.className = 'closeMenuButtonNotActive';
},500);
如果你不想污染全球范围:
(function(elem) {
window.setTimeout(function() {
elem.className = 'closeMenuButtonNotActive';
},500);
)(this);
无论如何,为了防止进一步的难以调试的问题,您应该至少考虑使用HTML <div onmouseup="doStuff(this)">
的函数,并从javascript代码定义doStuff。 或者甚至更好,从代码中添加鼠标事件侦听器指令。