Javascript 对DOM中[尚未]的元素使用getElementById?
据我所知,document.getElementById('myId')将只查找文档中已经存在的HTML元素。假设我已经通过JS创建了一个新元素,但是我还没有将它附加到文档正文中,有没有一种方法可以像通常使用getElementById一样通过它的id访问这个元素Javascript 对DOM中[尚未]的元素使用getElementById?,javascript,getelementbyid,Javascript,Getelementbyid,据我所知,document.getElementById('myId')将只查找文档中已经存在的HTML元素。假设我已经通过JS创建了一个新元素,但是我还没有将它附加到文档正文中,有没有一种方法可以像通常使用getElementById一样通过它的id访问这个元素 var newElement = document.createElement('div'); newElement.id = 'myId'; // Without doing: document.body.appendChild(n
var newElement = document.createElement('div');
newElement.id = 'myId';
// Without doing: document.body.appendChild(newElement);
var elmt = document.getElementById('myId'); // won't work
有解决办法吗?
(我必须告诉你,我不想存储对这个特定元素的任何引用,这就是为什么我需要通过它的Id访问它)
谢谢大家! getElementById是文档对象上的一个方法。它不会返回文档中没有的任何内容
不储存参考资料,嗯?如果您可以通过id神奇地将其从空中拉出,则air将是对它的引用。如果它不是文档的一部分,则您无法使用
document.getElementById
获取它getElementById
执行DOM查找,因此元素必须位于树中才能找到。如果创建一个浮动DOM元素,它只存在于内存中,不能从DOM访问。必须将其添加到DOM中才能可见
如果以后需要引用该元素,只需将引用传递给另一个函数——JavaScript中的所有对象都是通过引用传递的,因此从另一个函数中处理该浮动DOM元素会修改原始元素,而不是副本。如果已经创建了该元素,只需将该对象传递给其他函数并直接访问它即可
function createDiv()
{
var newElement = document.createElement('div');
doWorkWithDiv(newElement);
}
function doWorkWithDiv(element)
{
element.className = 'newElementCSS';
element.innerHTML = 'Text inside newElement';
addToDoc(element);
}
function addToDoc(element)
{
document.body.appendChild(element);
}
对于2019年或之后在这个问题上遇到困难的人,这里有一个更新的答案 Andrew Noyes接受的答案在该
文档中是正确的。getElementById
将不起作用,除非该元素存在于文档中,并且上述代码已经包含对所需元素的引用
但是,如果你不能直接检索你想要的元素,请考虑使用。选择器允许您检索纯粹存在于内存中的节点,例如:
var child = document.createElement("div");
child.id = "my_id";
var parent = document.createElement("div");
parent.appendChild(child);
var child2 = parent.querySelector("#my_id");
如果你已经创建了它,只需将对象传递给其他函数并直接访问它?@s_hewitt:这不适用于OP,但如果你像我一样,你不能“直接传递”,因为你缺少对它的引用。(您是使用innerHTML或某个库的等效项创建的。)在这种情况下,您试图获取引用,但getElementById位于错误的对象上,没有任何帮助。好的,谢谢!我认为通过执行document.createElement('div'),我的元素将以某种方式在列表或树中被引用,其中包含所有非附加元素。。。所以我想情况并非如此,我必须在没有身份证的情况下完成这项工作。