javascript - Kann ich setAttribute/removeAttribute verwenden, um Klassennamen hinzuzufügen oder zu löschen?
过去多啦不再A梦
过去多啦不再A梦 2017-05-19 10:46:49
0
3
1034

Als jemand in der Gruppe über die Operation von Klassennamen in nativen JS diskutierte, schlug er vor, dass die Methoden setAttribute und removeAttribute zum Betreiben der Klassennamen verwendet werden können: Ich dachte, es gäbe nur classList.add() oder classList.remove () Es gibt mehrere Möglichkeiten, dieses Problem zu lösen, aber jemand hat die Verwendung von setAttribute('class', 'xxx') und removeAttribute('class') vorgeschlagen. Das erste Gefühl ist, dass es begrenzt und unsicher ist: Erstens kann der Klassenname nur in das angegebene Ergebnis geändert werden, und zweitens wurde die Methode zum Löschen von Klassenattributen noch nie zuvor gesehen. Ich möchte fragen, ob dieser Ansatz bei der Operation von Klassennamen machbar ist. ?

过去多啦不再A梦
过去多啦不再A梦

Antworte allen(3)
我想大声告诉你

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

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

实现代码如下

ele.className += ' clsName'; //添加类名
ele.className = ele.className.replace(/ ?deleteClsName/g,''); //删除类名
曾经蜡笔没有小新

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

小葫芦

为什么不用addClass....

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage