我修改了下面 SO 帖子中的问题/答案以删除样式,按顺序。
问题/答案以相反的顺序删除脚本。
它没有用。但是,如果我将其改回倒序,一切都会奏效。
我的猜测是,如果您删除 style[0]
,style[1]
会立即更新为 style[0],在一个示例中 w/只有两种风格。因此循环会失败。
这是正确的吗?
样式数组在修改时是否几乎立即更新?
var scripts = document.getElementsByTagName("script");
for (var i=scripts.length; i--; ){
(scripts[i]).parentNode.removeChild(scripts[i]);
}
最佳答案
你猜对了; getElementsByTagName
返回一个事件“数组”(实际上不是数组,而是一个NodeList
或HTMLCollection
,取决于浏览器和版本)反射(reflect)对 DOM 的后续更新。
所以,你可以这样写:
var styles = document.getElementsByTagName("style");
while (styles.length) {
styles[0].parentNode.removeChild(styles[0]);
}
也就是说,没有理由偏爱这种方式。由于 JavaScript 在绘制 UI 的同一线程中运行,删除样式的结果在循环完成后才会生效,因此顺序对您来说无关紧要。
有用的 MDN 链接:
关于javascript - 为什么不能按前向顺序删除样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949975/