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 保存回文件,但您没有正确地