Javascript - document.createDocumentFragment() - 按ID引用元素

时间:2011-01-01 22:09:10

标签: javascript dom

在将元素添加到文档之前,是否可以通过其ID来引用元素,而该元素位于documentFragment中?

例如:

var docFragment = document.createDocumentFragment();
var newElem = document.createElement('div');
docFragment.appendChild(newElem);
var newAttrib = document.createAttribute('id');
newAttrib.value = 'myid';
newElem.setAttributeNode(newAttrib);
var newElem2 = document.createElement('span');
docFragment.firstChild.appendChild(newElem2);
var newAttrib = document.createAttribute('id');
newAttrib.value = 'myid2';
newElem2.setAttributeNode(newAttrib);

对于一些例子,我试过这个,

alert(docFragment.getElementById('myid').id)< -----但这不起作用

alert(docFragment.document.getElementById('myid').id)< -----但这不起作用

我知道这有效:

alert(docFragment.firstChild.id)< -----这确实有效,但我想知道是否有可能以其他方式引用它

1 个答案:

答案 0 :(得分:1)

No, it is not

  

简单地创建元素并分配ID不会使getElementById访问该元素。相反,需要首先使用insertBefore或类似的方法将元素插入到文档树中,可能需要将其插入到隐藏的div中。

除此之外,DocumentFragment仅实现Node接口的方法,getElementById不属于此类。

没有其他方法可以通过ID获取元素。