javascript - 如何在没有 JQuery 的情况下获取一组 DIV ID

标签 javascript class html

我有一堆链接,这些链接的 ID 与附加到其他链接的类相对应。我将链接 ID 作为变量传递,然后使用该变量通过 JavaScript 按类查找其他链接。这是一个代码示例:

    var elements = document.getElementsByClassName(id);
    for(var i=0; i<elements.length; i++){}

到目前为止一切顺利,我可以对这些相关链接做任何我想做的事情。但是,现在我想获取这些链接所在的 div 的 ID。有什么方法可以在不使用 JQuery 的情况下使用 JavaScript 查找链接的 div id?

在你问之前,为什么不直接使用 JQuery?我是新手,还没有学过 JQuery。此外,在尝试学习其他东西之前,我想了解如何用 JavaScript 做事。

最佳答案

要访问父元素 ID,您可以使用:

var elementId = elements[i].parentNode.id;

查看此处了解更多信息:Getting the parent div of element

要找到最近的 DIV 父级,您应该可以这样做:

var elements = document.getElementsByClassName(id);
for(var i=0; i<elements.length; i++){
    var parent = elements[i].parentNode;

    while (parent.localName != null && parent.localName.toLowerCase() != "div") {
        parent = parent.parentNode;
    }

    if (parent != null && parent.id != null) {
        var parentId = parent.id;

        alert(parentId);
    }
}

编辑:刚刚添加了一些空检查,以防类不包含在任何 DIV 中。

这是我使用的测试:

<html>
<body>
    <div id="asdf">
        <a href="#" class="blah">1</a>
        <a href="#" class="blah">2</a>
    </div>
    <div id="asdf2">
        <span>
            <a href="#" class="blah">3</a>
            <a href="#" class="blah">4</a>
        </span>
    </div>
    <!-- These two won't cause an alert since no DIV surrounds them -->
    <a href="#" class="blah">5</a>
    <a href="#" class="blah">6</a>
    <div id="asdf3">
        <span>
            <a href="#" class="blah">7</a>
            <a href="#" class="blah">8</a>
        </span>
    </div>

    <input type="button" onclick="run();return false;" value="Run" />

    <script>
    // This will cause 6 alerts: asdf, asdf, asdf2, asdf2, asdf3, asdf3
    function run() {
        var elements = document.getElementsByClassName("blah");
        for(var i=0; i<elements.length; i++){
            var parent = elements[i].parentNode;

            while (parent.localName != null && parent.localName.toLowerCase() != "div") {
                parent = parent.parentNode;
            }

            if (parent != null && parent.id != null) {
                var parentId = parent.id;

                alert(parentId);
            }
        }
    }
    </script>
</body>
</html>

关于javascript - 如何在没有 JQuery 的情况下获取一组 DIV ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15307294/

相关文章:

vb.net - 在 VB.net 中创建 VBA 类

php - 检查事件状态按钮前后的按钮

javascript - 图表上的 d3 数据线迷失方向

javascript - Vue v-if 不更新

javascript - 从下拉元素中选择的选项不可见

reactjs - 将 react-charts 功能组件示例转换为类组件

javascript - 初始化后使用jquery修改设置UIkit上传

javascript - 继承自 JS 中的两个(或多个)内置对象(Map、EventTarget)

javascript - 下拉列表如何使用 Angular 选择默认值

javascript - 如果发生 Action 则增加变量