脚本以交替模式从元素中删除类
最重要的原因是什么?
可以采取哪些措施来解决问题?
Object.prototype.removeClass = function (class_name) {
if (this.length) {
for (i = 0; i < this.length; i++) {
this[i].classList.remove(class_name);
}
}
}
document.getElementsByClassName("test").removeClass("test");
答案 0 :(得分:1)
因为删除时,下一个索引向下移动一个。循环方向相反。
for (var i = this.length - 1; i >= 0; i--) { ... }
使用while循环可能会带来更多内容
Object.prototype.removeClass = function(class_name) {
if (this.length) {
while(this.length>0) {
console.log(this.length);
this[0].classList.remove(class_name);
}
}
}
document.getElementsByClassName("test").removeClass("test");
输出为7,6,5,4,3,2,1
删除班级时,this
会更新
答案 1 :(得分:1)
我发现了另一种解决方法,而不是@epascarello所描述的。从this
中创建纯JS数组可以很好地完成工作:
var that = Array.prototype.slice.call(this);
for (var i = 0; i < that.length; i++) {
that[i].classList.remove(class_name);
}