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. ?
其实如果只是想要处理增删class的话,也可以选择使用className来做,这样也可以避免classList的兼容性问题。
可以选择自行封装两个增删的方法出来。
实现代码如下
removeAttribute
是用来删除指定属性的,class
也是属性,自然可以删除。classList
是 HTML5 的 API,如果只能用它来添加删除,你让不支持classList
的浏览器版本情何以堪。另外这种问题试一下不就知道了。为什么不用addClass....
setAttribute修改的是class这一个整体属性,如果你要用来处理class,你还需要做判断
class="test1 test2 test3";这种情况下,你要setAttribute,你需要先判断你的value存在不,不存在增加,存在不做处理。remove的话,你要判断存在不存在,不存在,不处理,存在的话,不能把其他的删除。。。。