首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >临时文档中的getElementById不起作用

临时文档中的getElementById不起作用
EN

Stack Overflow用户
提问于 2011-11-16 16:43:23
回答 3查看 1.9K关注 0票数 1

当我想在li元素中获取id并将其存储在临时文档中时,我遇到了问题。这是我的javascript代码。

代码语言:javascript
运行
复制
var tempNode = document.createElement("div"); //creating element for storing response
    tempNode.innerHTML=ajaxhttp.responseText;
var nodes = tempNode.getElementsByTagName("div");

ajaxhttp.responseText等于

代码语言:javascript
运行
复制
<div id="side">
    .....    
    parent
    parent

</div>
        </li>
        <li id="recent-posts-3" class="widget widget_recent_entries">       <h2 class="widgettitle">fdfs</h2>
        <ul>
                <li><a href="example.com2011/11/16/43422/" title="fdsdfしい!&nbsp;モsdf&nbsp;モバイルdsf</a></li>
                                    </ul>
        </li>



<li id="text-7" class="widget widget_text">         
......
</div>

我很抱歉,如果太多了,但这是我的问题。当我尝试循环并使用下面的代码获取id时

代码语言:javascript
运行
复制
for (n=0; n<nodes.length; n++) {
 console.log(tempNode.getElementById('recent-posts-3'));
}

当我尝试document.getElementById('recent-posts-3');时,出现的错误不是function.and,错误是相同的。我如何解决这个问题?

注意:

如果在我的tempNode中只有这个

代码语言:javascript
运行
复制
<li id="recent-posts-3" class="widget widget_recent_entries">       <h2 class="widgettitle">fdfs</h2>
    <ul>
            <li><a href="example.com2011/11/16/43422/" title="fdsdfしい!&nbsp;モsdf&nbsp;モバイルdsf</a></li>
                                </ul>
    </li>

这就是工作。但对我来说不是,我想要所有的元素。2.而且我没有使用jquery,我想要纯javascript。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-16 16:59:16

getElementById是document的一种方法,但您可以在元素上使用它

您可以改用element.querySelector():

代码语言:javascript
运行
复制
tempNode.querySelector('li[id="recent-posts-3"]')
票数 3
EN

Stack Overflow用户

发布于 2011-11-16 16:51:14

ID在整个文档中必须是惟一的,因此没有理由让函数getElementById对每个节点都可用。相反,只需使用document.getElementById;它将返回具有该ID的元素(应该只有一个ID)。

为此,您需要首先将div附加到body

代码语言:javascript
运行
复制
tempNode.style.display = "none"; // to visually still hide it

document.body.appendChild(tempNode);

var elem = document.getElementById("recent-posts-3");
票数 1
EN

Stack Overflow用户

发布于 2011-11-16 17:02:28

在Chrome、Firefox 7、IE 8中尝试过此代码

代码语言:javascript
运行
复制
var div = document.createElement("div");
div.innerHTML = '<a id="myId">AAAA</a>';
var a = div.getElementById('myId');
alert(a.id);

Chrome: alerts myId

火狐: alerts myId

IE:给定对象不支持此属性或方法错误

所以看起来至少在IE8中,当你使用document.createElement(编辑:当你检索一个元素时)创建的时候,它只有一个方法nextSibling,而在Chrome和Firefox中,整个方法列表都被添加了

因此,我现在能想到的唯一跨浏览器解决方案是将元素添加到文档中的隐藏div中,然后执行getElementById

请参阅:http://jsfiddle.net/zMkfr/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8148818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档