-2

我有一些 HTML 代码,如果不使用 javascript,我将无法对其进行编辑。我试图访问的 DIV 是另一个具有 ID 的孩子:

<div id="contentcolumn">
    <div class ="content content_gray"></div>
    <div class ="forum_tabs"</div>
</div>

我试图访问的 DIV 是具有"content content_gray". 我不想使用该类访问它,因为其他元素具有该类。我必须通过访问 ID 为“contentcolumn”的 DIV 的第一个孩子来访问它。

4

2 回答 2

2

我必须通过访问 ID 为“contentcolumn”的 DIV 的第一个孩子来访问它。

你的意思是这样吗?

var elm = document.getElementById("contentcolumn").firstElementChild;

你说是第一个孩子,所以我懒得去查了className,不过如果你愿意,当然可以。您可以通过以下方式添加该检查:

if (elm.className.match(/\bcontent\b/) && elm.className.match(\bcontent_gray\b)) {
    // ...
}

请注意,并非所有浏览器都有firstElementChild. (例如,我不记得 IE8 是否确实如此。)对于那些不这样做的人,一个简单的循环可以做到(甚至对那些拥有它的人也有效):

var elm = document.getElementById("contentcolumn").firstChild;
while (elm && elm.nodeType !== 1) {
    elm = elm.nextSibling;
}

您可以使用一个小实用程序库:

function firstElementChild(parent) {
    var node = parent && parent.firstElementChild;
    if (!node && parent) {
        node = parent.firstChild;
        while (node && node.nodeType !== 1) {
            node = node.nextSibling;
        }
    }
    return node;
}

您在下面询问了如何在id拥有元素后设置元素。这部分很简单:

elm.id = "value";
于 2013-09-23T21:00:31.380 回答
0

检查每个 document.getElementById("contentcolumn").getElementsByTagName("div") 的 element.className

否则, jQuery("#id > .class") 对我来说看起来更简单

于 2013-09-23T21:06:06.037 回答