复制Node对象的parentNode

时间:2013-09-22 11:01:00

标签: javascript firefox-addon

我正在使用addon-sdk-1.14为firefox 24.0开发插件,并且在复制Node对象的parentNode时我注意到了一些奇怪的行为。

全内容脚本文件:

var imgs = document.getElementsByTagName("img");                             
if (imgs.length > 0) {                                                      
    var node = imgs.item(0);                                                
    var parent = node.parentNode.cloneNode();                               
    if (parent && node.parentNode) {                                        
        console.log(node.parentNode.nodeType);                              
        console.log(parent.nodeType);                                       
    }                                                                       
} 

输出:

1
null

我不熟悉javascript,我想了解发生了什么?我们不允许制作Node对象的副本,还是什么?

2 个答案:

答案 0 :(得分:2)

parent变量的名称更改为不那么突兀的名称,或者将代码置于自执行匿名函数中(我建议使用前者)。

答案 1 :(得分:0)

尝试node.parentNode.nodeName,您可能会引用textNode或其他无法偶然使用的内容。

您还可以通过以下方式循环浏览可用的方法和属性...

for (i in node.parentNode) {alert('i = '+i);}

评论,我会跟着你,直到你到达你需要的地方。

请注意,如果您拥有id个属性,则可能会重复...

  

警告:cloneNode()可能会导致文档中的重复元素ID

https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode#Notes

...当您使用JavaScript引用id时,它将导致不可预测的行为。