在将元素添加到文档之前,是否可以通过其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)
< -----这确实有效,但我想知道是否有可能以其他方式引用它
答案 0 :(得分:1)
简单地创建元素并分配ID不会使
getElementById
访问该元素。相反,需要首先使用insertBefore
或类似的方法将元素插入到文档树中,可能需要将其插入到隐藏的div中。
除此之外,DocumentFragment
仅实现Node
接口的方法,getElementById
不属于此类。
没有其他方法可以通过ID获取元素。