在这个简单的脚本中,我得到错误“obj.parentNode.getElementById不是一个函数”,我不知道,出了什么问题。
<script type="text/javascript">
function dosomething (obj) {
sibling=obj.parentNode.getElementById("2");
alert(sibling.getAttribute("attr"));
}
</script>
<body>
<div>
<a id="1" onclick="dosomething(this)">1</a>
<a id="2" attr="some attribute">2</a>
</div>
</body>
答案 0 :(得分:6)
.getElementById()
在document
上,就像这样:
document.getElementById("2");
由于ID 应该是唯一的,因此不需要通过ID相对于任何其他元素(在这种情况下,在该父元素内)查找元素的方法。此外,如果使用HTML4,则它们不应以数字开头,HTML5中的数字ID 有效。
答案 1 :(得分:3)
用.querySelector('#'+ id)替换.getElementById(id);
答案 2 :(得分:1)
document.getElementById()
将不起作用。
例如,对于Ajax,并非所有节点都附加在任何给定点。在这种情况下,您需要显式跟踪每个节点的句柄(通常最好的性能),或者使用类似的东西来查看对象:
function domGet( id , rootNode ) {
if ( !id ) return null;
if ( rootNode === undefined ) {
// rel to doc base
var o = document.getElementById( id );
return o;
} else {
// rel to current node
var nodes = [];
nodes.push(rootNode);
while ( nodes && nodes.length > 0 ) {
var children = [];
for ( var i = 0; i<nodes.length; i++ ) {
var node = nodes[i];
if ( node && node['id'] !== undefined ) {
if ( node.id == id ) {
return node; // found!
}
}
// else keep searching
var childNodes = node.childNodes;
if ( childNodes && childNodes.length > 0 ) {
for ( var j = 0 ; j < childNodes.length; j++ ) {
children.push( childNodes[j] );
}
}
}
nodes = children;
}
// nothing found
return null;
}
}