我在这里遇到了这个循环,用于使用iframe
vanilla JS删除DOM中的所有元素:
var iframes = document.querySelectorAll('iframe');
for (var i = 0; i < iframes.length; i++) {
iframes[i].parentNode.removeChild(iframes[i]);
}
在循环的最后一行中,为什么作者针对iframes
变量持有的集合的迭代两次?
换句话说,为什么语法iframes[i].parentNode.removeChild(iframes[i]);
不是像伪代码那样更简单的东西removeChild(iframes[i])
?
我想知道是否可以在不使用该术语的情况下以更短的方式完成iframes[i]
两次,但一次这样就不会有所谓的“重复”。
对不起,如果我写的任何东西看起来很荒谬。
因为如果你只有子节点,你需要它两次。你需要:
parent.removeChild(child)
但是,如果你没有父母,那么你必须child.parentNode
像这样从孩子那里得到父母:
child.parentNode.removeChild(child);
凡iframes[i]
在你的代码child
。
请注意,更详细的代码版本可能会更明显:
var iframes = document.querySelectorAll('iframe');
var child, parent;
for (var i = 0; i < iframes.length; i++) {
child = iframes[i];
parent = child.parentNode;
parent.removeChild(child);
}
注意:在现代浏览器中,您可以执行以下操作:
child.remove()
在您的代码中将是:
iframes[i].remove()
添加它是为了防止.removeChild()
经常需要的冗余引用。
我想知道这是否可以在不使用 iframes[i] 两次的情况下以更短的方式完成,但一次这样就不会有所谓的“重复”。
在现代浏览器中,可以这样做:
var iframes = document.querySelectorAll('iframe');
for (var i = 0; i < iframes.length; i++) {
iframes[i].remove();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句