除非将DOM元素附加到文档,否则无法使用getElementById
方法。在将DOM元素附加到文档之前,我可以通过什么方法或机制来访问和修改它?
我有一个大的DOM元素,我想访问它的一部分。我经常使用getElementById
,但DOM元素没有附加到文档。
var element = document.createElement("div");
element.id = 'testqq';
var el = document.getElementById('testqq'); // el will be null!
来源:https://developer.mozilla.org/en/dom/document.getelementbyid
我正在寻找一个不使用jQuery的答案。我喜欢jQuery,但它不是我当前问题的选择。
答案 0 :(得分:4)
嗯,您已经使用element
变量引用了它。
但我敢打赌,你的意思是你想要嵌入里面的东西。如果这是正确的,您可以使用getElementsByTagName('*')
,然后迭代返回的集合,测试ID属性,直到找到您的。
var div = document.createElement('div');
div.innerHTML = '<p>yo</p><div><span id="tester">hi</span></div>';
var all = div.getElementsByTagName('*');
// search for element where ID is "tester"
for (var i = 0, len = all.length; i < len; i++) {
if (all[i].id === 'tester') {
var result = all[i];
break;
}
}
alert( result.id );
在尝试循环之前,您可以测试浏览器是否支持querySelectorAll
,如果是,请使用它。
if( div.querySelectorAll ) {
var result = div.querySelectorAll('#tester');
} else {
// Do the loop with getElementsByTagName()
}
答案 1 :(得分:0)
document.createElement
函数返回一个新的元素对象,但该元素在DOM 中不存在,直到您插入。
文档对象无法回忆您要求它创建的元素,因此当您调用document.getElementById('testqq')
时,它完全不知道您在寻找什么。
在您的示例中,您已经对该元素的引用。你为什么要问文件呢?