【问题标题】:Setting className shortcut设置类名快捷方式
【发布时间】:2013-05-20 19:02:43
【问题描述】:

在 JavaScript 中设置 className 属性是否有已知的单行代码?我的意思是你不必担心是否已经定义了一些类(-es)。

我能想到的最短的是

var objDemo = document.getElementById("demo");
objDemo.className = "newclass " + (objDemo.className || "");

如果当前的 className 未定义,这不会死,但是它给我留下了一个尾随空格。这对当前的浏览器来说会是个问题吗?

【问题讨论】:

    标签: javascript shortcut


    【解决方案1】:
    document.getElementById('demo').classList.add('newclass');
    

    您可以在 Mozilla 开发网络上阅读有关此 API 的更多信息:https://developer.mozilla.org/en-US/docs/Web/API/element.classList

    请注意,10 之前的 Internet Explorer 版本尚不支持,但在上面引用的页面上提供了一个 polyfill。

    【讨论】:

    • 谢谢,没听说过这个新属性!
    • 注意,你需要确保你所有的目标浏览器都支持这个。 caniuse.com/#feat=classlist
    • 从 IE10 (caniuse.com/classlist) 开始支持它,所以从技术上讲,所有当前的浏览器都可以,即使 IE9 支持会很好。
    • @epascarello:当然;如果不是,我认为填充缺失的支持总是比发明一个新的自定义 API 更好。
    【解决方案2】:

    您可能需要先检查是否有已经具有您要添加的名称的类, 或者如果找到的话就将它移到类列表的末尾。

    此功能在大多数浏览器中都可以使用,无需任何波利填充:

    function addClass(element, c){
        var c1= element.className.replace(RegExp('\\s*'+c+'\\b\\s*'), '');
        element.className= c1? c1+' '+c:c;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 2012-10-18
      • 1970-01-01
      • 2015-02-08
      • 2011-02-18
      相关资源
      最近更新 更多