removeChild()不工作?

时间:2015-06-01 20:07:42

标签: javascript removechild

显然,我在这里做错了什么,但不是一个原生的javascript人,我很难发现它。

我不小心将一大堆子节点添加到我用来在我的iOS应用程序中填充webViews的一些html的头部(我通常用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报告它正在删除节点(正如我期望的那样,我的代码),但是当我检查它们是否仍在那里时,它们还没有#39真的走了!

例如:

  

[Log]删除i == 7 body * {-webkit-text-size-adjust:none   !important;}

     

[Log]删除i == 6 body * {-webkit-text-size-adjust:none   !重要;}

他们是用

创建的
var myStyle = document.createElement('style');  
myStyle.innerHTML = 'body * {-webkit-text-size-adjust:none !important;}'; 
document.head.appendChild(myStyle);

我确定这是显而易见的事情,但现在原因是我不知道。

关于为什么这些实际上没有被删除的任何想法?

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,并完成它应该的工作。我想你的意思是将运行时html的快照保存回文件中,但你没有正确地那个