我编写的用于“清理”的函数有问题,请参阅下面的代码,我将解释它在下面是如何工作的。
clean: function (e) {
var
els = null,
i = 0;
if (e === undefined) {
e = this.cont;
}
els = e.getElementsByTagName('*');
for (i=0;i<els.length;i++) {
if (els[i].className.search('keep') === -1) {
e.removeChild(els[i]);
}
}
return this;
},
参数 e 是一个 dom 元素,如果没有提供它, this.cont 也是一个存储在整个函数中的 dom 元素,并且 e 默认为它。
该函数循环遍历所有子元素并检查它没有保留类(很明显这是做什么的)并删除任何不匹配的。
这一切似乎都在工作,但我有一个元素,它有 2 个图像和 2 个输入,没有类“keep”,但变量 i 只达到 2 并且循环停止(它应该达到 4 并删除所有四个元素)
任何帮助将不胜感激。
/* 更新 */
感谢@pimvb 和@Brett Walker,下面是运行良好的最终代码。
clean: function (e) {
var
els = null,
i = 0;
if (e === undefined) {
e = this.cont;
}
els = e.getElementsByTagName('*');
i = els.length;
while (i--) {
if (els[i].className.search('keep') === -1) {
els[i].parentNode.removeChild(els[i]);
}
}
return this;
},