Javascript类名称操作不起作用

这个问题在这里已经有了答案:

  • 使用JavaScript 30个答案更改元素的类

  • 你应该用“绑定”来调用你的函数来保持“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。 或者甚至更好,从代码中添加鼠标事件侦听器指令。

    链接地址: http://www.djcxy.com/p/25209.html

    上一篇: Javascript class name manipulation not working

    下一篇: Make a div tag toggle between two css classes