如果我重复这个问题,请原谅。
我有一个HTML,一个div标签中的所有元素都有不同的id,假设我已经获得了对div的引用,有没有什么简单的方法可以通过它的id来获取元素,而不是迭代所有带有div的元素?
下面是我的示例html:
<div id="div1" >
<input type="text" id="edit1" />
<input type="text" id="edit2" />
</div>
<div id="div2" >
<input type="text" id="edit1" />
<input type="text" id="edit2" />
</div>
发布于 2011-08-24 14:57:57
你可以试试这样的东西。
示例标记。
<div id="div1" >
<input type="text" id="edit1" />
<input type="text" id="edit2" />
</div>
<div id="div2" >
<input type="text" id="edit3" />
<input type="text" id="edit4" />
</div>
JavaScript
function GetElementInsideContainer(containerID, childID) {
var elm = {};
var elms = document.getElementById(containerID).getElementsByTagName("*");
for (var i = 0; i < elms.length; i++) {
if (elms[i].id === childID) {
elm = elms[i];
break;
}
}
return elm;
}
演示:http://jsfiddle.net/naveen/H8j2A/
nnnnnn建议的更好的方法
function GetElementInsideContainer(containerID, childID) {
var elm = document.getElementById(childID);
var parent = elm ? elm.parentNode : {};
return (parent.id && parent.id === containerID) ? elm : {};
}
演示:http://jsfiddle.net/naveen/4JMgF/
叫它像这样
var e = GetElementInsideContainer("div1", "edit1");
发布于 2015-12-12 16:21:11
var x = document.getElementById("parent").querySelector("#child");
// don't forget a #
或
var x = document.querySelector("#parent").querySelector("#child");
或
var x = document.querySelector("#parent #child");
或
var x = document.querySelector("#parent");
var y = x.querySelector("#child");
例如:
var x = document.querySelector("#div1").querySelector("#edit2");
发布于 2011-08-24 14:48:17
你不会想这么做的。具有多个具有相同id
的元素是无效的。浏览器不会很好地处理这一点,并且您将具有未定义的行为,这意味着当您通过该id选择一个元素时,您不知道浏览器将为您提供什么,这可能是不可预测的。
您应该使用一个类,或者只是迭代输入并跟踪索引。
尝试如下所示:
var div2 = document.getElementById('div2');
for(i = j = 0; i < div2.childNodes.length; i++)
if(div2.childNodes[i].nodeName == 'INPUT'){
j++;
var input = div2.childNodes[i];
alert('This is edit'+j+': '+input);
}
https://stackoverflow.com/questions/7171483
复制相似问题