javascript - Javascript 中的有序列表迭代

标签 javascript

有没有办法让我迭代功能与 table.rows 类似的有序列表?我正在使用 JavaScript。

我问这个问题的原因是因为我有一个有序列表,其中包含另一个有序列表。我只想返回父列表项而不是子列表项。

<ol id="pList">
    <li>Item A</li>
    <li>
        <ol id="cList">
            <li>A's Child 1</li>
            <li>A's Child 2</li>
        </ol>
    </li>
    <li>Item B</li>
    <li>Item C</li>
    <li>Item D</li>
</ol>

我现在使用 getElementsbyTag 并返回所有 li,包括 cList 中的那个。我只想要 pList 中的那些。

谢谢

仅供引用:我更喜欢用 Javascript 完成。该代码必须在 Greasemonkey 中运行。我对 jquery 不太了解,也不是一个 javascript 程序员。

最佳答案

没有specific属性,让您可以直接访问 <li> <ol> 的 child .

但是,枚举它们非常容易,特别是当您考虑 <ol> 的唯一合法子代时。必须是空白文本节点且 <li>节点。

var ol = document.getElementById('pList');
var li = [];
var node = ol.firstChild;
while (node) {
    if (node.tagType === 3 && node.tagName === 'LI') {
        li.push(node);
    }
    node = node.nextSibling;
}

最后,数组 li包含所需的子项。

上面的代码可以在任何浏览器中运行。 .children集合在较旧版本的 MSIE 上存在问题,并且 querySelectorAll甚至更现代(因此不太受广泛支持)。

关于javascript - Javascript 中的有序列表迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877993/

相关文章:

javascript - 从数组中获取值并检查(勾选)相关复选框

javascript数组推送问题

javascript - 动态页面 anchor slider 故障

javascript - 如何将种子值传递给 Sequelize 中的随机顺序函数

javascript - Div 在 IE 中没有正确隐藏

javascript - Svelte:将 noscroll 类名从组件添加到正文

javascript - 使用 Promises 对 Ember 对象数组进行排序

javascript - Ajax 之后设置异步标记集群

javascript - 使用 native add_widget 将项目添加到 Gridster.js 网格会导致未知错误

javascript - 如何在 Kendo UI mobile 中不使用 app.navigate() 来切换 View ?