首页  >  问答  >  正文

javascript - 可以用setAttribute/removeAttribute对类名进行增删操作吗?

在群里讨论原生js对类名的操作问题,有人提出可以用setAttribute与removeAttribute的方法对类名进行操作,我觉得很不解:我以为只有classList.add()或classList.remove()这种方法可以解决这种需求,可是有人提出了用setAttribute('class', 'xxx')和removeAttribute('class')的方法。第一感觉就是局限性与不安全:第一只能将类名更改为指定结果,第二删除class属性的做法从来没有见过。请问对类名的操作中是否这样的做法是否具有可行性??

过去多啦不再A梦过去多啦不再A梦2683 天前964

全部回复(3)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:48:49

    其实如果只是想要处理增删class的话,也可以选择使用className来做,这样也可以避免classList的兼容性问题。

    可以选择自行封装两个增删的方法出来。

    实现代码如下

    ele.className += ' clsName'; //添加类名
    ele.className = ele.className.replace(/ ?deleteClsName/g,''); //删除类名

    回复
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:48:49

    removeAttribute 是用来删除指定属性的, class 也是属性,自然可以删除。classList 是 HTML5 的 API,如果只能用它来添加删除,你让不支持 classList 的浏览器版本情何以堪。另外这种问题试一下不就知道了。

    回复
    0
  • 高洛峰

    高洛峰2017-05-19 10:48:49

    为什么不用addClass....

    setAttribute修改的是class这一个整体属性,如果你要用来处理class,你还需要做判断

    class="test1 test2 test3";这种情况下,你要setAttribute,你需要先判断你的value存在不,不存在增加,存在不做处理。remove的话,你要判断存在不存在,不存在,不处理,存在的话,不能把其他的删除。。。。

    回复
    0
  • 取消回复