removeChild() 不工作?
removeChild() not working?
显然我在这里做错了什么,但我不是本地人 javascript,我很难发现它。
我不小心在一些 html 的头部添加了很多子节点,我用来在我的 iOS 应用程序中填充 webView(我通常在 objc 中编程)。发生这种情况是因为我每次加载页面时都使用 document.head.appendChild ,而没有检查是否已经存在我想要的节点。所以现在我有多个所需的节点。喔!
所以现在我正在尝试编写一个函数来再次删除它们。
这是我的:
function removeThemAgain() {
if (document.head.hasChildNodes()) {
console.log('has child nodes');
for (var i = document.head.childNodes.length - 1; i >= 0; i--) {
if (document.head.childNodes[i].innerHTML == 'body * {-webkit-text-size-adjust:none !important;}'){
console.log('removing i == ' + i + ' ' + document.head.childNodes[i].innerHTML);
document.head.removeChild(document.head.childNodes[i]);
}
}
}
}
现在,它正在寻找节点,因为 console.log 正在报告它正在删除节点(正如我根据我的代码所期望的那样),但是当我检查它们是否仍然存在时,他们根本就没有真正离开过!
例如:
[Log] removing i == 7 body * {-webkit-text-size-adjust:none
!important;}
[Log] removing i == 6 body * {-webkit-text-size-adjust:none
!important;}
它们是用
创建的
var myStyle = document.createElement('style');
myStyle.innerHTML = 'body * {-webkit-text-size-adjust:none !important;}';
document.head.appendChild(myStyle);
我敢肯定这是显而易见的事情,但现在我不知道原因。
关于为什么这些实际上没有被删除有什么想法吗?
您的代码是正确的,可以完成预期的工作。我想您打算将运行时的快照 html 保存回文件,但您没有正确地 那 。
显然我在这里做错了什么,但我不是本地人 javascript,我很难发现它。
我不小心在一些 html 的头部添加了很多子节点,我用来在我的 iOS 应用程序中填充 webView(我通常在 objc 中编程)。发生这种情况是因为我每次加载页面时都使用 document.head.appendChild ,而没有检查是否已经存在我想要的节点。所以现在我有多个所需的节点。喔!
所以现在我正在尝试编写一个函数来再次删除它们。
这是我的:
function removeThemAgain() {
if (document.head.hasChildNodes()) {
console.log('has child nodes');
for (var i = document.head.childNodes.length - 1; i >= 0; i--) {
if (document.head.childNodes[i].innerHTML == 'body * {-webkit-text-size-adjust:none !important;}'){
console.log('removing i == ' + i + ' ' + document.head.childNodes[i].innerHTML);
document.head.removeChild(document.head.childNodes[i]);
}
}
}
}
现在,它正在寻找节点,因为 console.log 正在报告它正在删除节点(正如我根据我的代码所期望的那样),但是当我检查它们是否仍然存在时,他们根本就没有真正离开过!
例如:
[Log] removing i == 7 body * {-webkit-text-size-adjust:none !important;}
[Log] removing i == 6 body * {-webkit-text-size-adjust:none !important;}
它们是用
创建的var myStyle = document.createElement('style');
myStyle.innerHTML = 'body * {-webkit-text-size-adjust:none !important;}';
document.head.appendChild(myStyle);
我敢肯定这是显而易见的事情,但现在我不知道原因。
关于为什么这些实际上没有被删除有什么想法吗?
您的代码是正确的,可以完成预期的工作。我想您打算将运行时的快照 html 保存回文件,但您没有正确地 那 。