当我想在li元素中获取id并将其存储在临时文档中时,我遇到了问题。这是我的javascript代码。
var tempNode = document.createElement("div"); //creating element for storing response
tempNode.innerHTML=ajaxhttp.responseText;
var nodes = tempNode.getElementsByTagName("div");ajaxhttp.responseText等于
<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しい! モsdf モバイルdsf</a></li>
</ul>
</li>
<li id="text-7" class="widget widget_text">
......
</div>我很抱歉,如果太多了,但这是我的问题。当我尝试循环并使用下面的代码获取id时
for (n=0; n<nodes.length; n++) {
console.log(tempNode.getElementById('recent-posts-3'));
}当我尝试document.getElementById('recent-posts-3');时,出现的错误不是function.and,错误是相同的。我如何解决这个问题?
注意:
如果在我的tempNode中只有这个
<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しい! モsdf モバイルdsf</a></li>
</ul>
</li>这就是工作。但对我来说不是,我想要所有的元素。2.而且我没有使用jquery,我想要纯javascript。
发布于 2011-11-16 16:59:16
getElementById是document的一种方法,但您可以在元素上使用它
您可以改用element.querySelector():
tempNode.querySelector('li[id="recent-posts-3"]')发布于 2011-11-16 16:51:14
ID在整个文档中必须是惟一的,因此没有理由让函数getElementById对每个节点都可用。相反,只需使用document.getElementById;它将返回具有该ID的元素(应该只有一个ID)。
为此,您需要首先将div附加到body:
tempNode.style.display = "none"; // to visually still hide it
document.body.appendChild(tempNode);
var elem = document.getElementById("recent-posts-3");发布于 2011-11-16 17:02:28
在Chrome、Firefox 7、IE 8中尝试过此代码
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/
https://stackoverflow.com/questions/8148818
复制相似问题