首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在div标记中通过id获取元素的简单方法?

在div标记中通过id获取元素的简单方法?
EN

Stack Overflow用户
提问于 2011-08-24 14:46:10
回答 7查看 259.5K关注 0票数 41

如果我重复这个问题,请原谅。

我有一个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>
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 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");
票数 53
EN

Stack Overflow用户

发布于 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");
票数 34
EN

Stack Overflow用户

发布于 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);
    }

JSFiddle

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

https://stackoverflow.com/questions/7171483

复制
相关文章

相似问题

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