在新创建的DOM对象插入文档之前使用getElementById

编程入门 行业动态 更新时间:2024-10-13 10:31:01
在新创建的DOM对象插入文档之前使用getElementById - 如何?(Use getElementById on newly created DOM object before it is inserted into the document — HOW?)

除非将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,但它不是我当前问题的选择。

The getElementById method cannot be used unless the DOM element is attached to the document. By what method or mechanism can I access and modify a DOM element before it is attached to the document?

I have a large DOM element and I want to access a piece of it. I would classically use getElementById, but the DOM element is not attached to the document.

var element = document.createElement("div"); element.id = 'testqq'; var el = document.getElementById('testqq'); // el will be null!

source: https://developer.mozilla.org/en/dom/document.getelementbyid

I am looking for an answer that does not use jQuery. I love jQuery, but it is not an option for my current problem.

最满意答案

好吧,你已经用你的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() }

Well, you already have a reference to it with your element variable.

But I'll bet you mean you want something nested inside. If that's right, you could use getElementsByTagName('*'), then iterate over the collection that's returned, testing the ID property until yours is found.

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 );

Before you try the loop, you can test to see if querySelectorAll is supported in the browser, and use that if so.

if( div.querySelectorAll ) { var result = div.querySelectorAll('#tester'); } else { // Do the loop with getElementsByTagName() }

更多推荐

本文发布于:2023-07-18 04:33:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1154819.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对象   文档   DOM   getElementById

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!