javascript - IE10 与 nth-child 和 nth-of-type 的行为不一致

标签 javascript internet-explorer-10 html-table css-selectors

像这样的表格:

<table>
    <thead>
        <tr><td>1</td></tr>
    </thead>
    <tbody>
        <tr><td>2</td></tr>
        <tr><td>3</td></tr>
        <tr><td>4</td></tr>
        <tr><td>5</td></tr>
    </tbody>
</table>

我尝试从所有行(包括 THEAD 中的行)中获取第 3 行,如下所示:

table.querySelector("tr:nth-of-type(3)");

我得到第 4 行。此外,使用 5 作为 :nth-of-type 的值返回 null。使用 4 返回最后(第五)行。碰巧 TBODY 的第一行丢失了(值 1 返回 THEAD 中的行)。

这是 IE 错误还是我做错了什么?顺便说一句,我的环境是 WinJS,它使用 IE 10 作为它的 JavaScript 引擎。

我仔细检查了 :nth-of-type 是基于 1 的,而不是基于 0 的。我对 :nth-child 有完全相同的结果。

最佳答案

我明白了。

:nth-child:nth-of-type 返回其父元素的第 n 个元素。

但是 TR 有不同的父项(THEAD 和 TBODY),即使它们属于同一个表。这就是导致结果困惑的原因。

如果你这样做:

table.querySelectorAll("tr:nth-of-type(1)");

数组包含两个元素。分别是 THEAD 和 TBODY 的第一个 TR。

调用 nth-of-type(2) 返回 TR 编号 3 因为......它确实是表中唯一的 TR,它是其父项 TBODY 的第二个子项。

我需要的是一个选择器,它在找到的所有元素中选择元素 n°X,但它不存在(据我所知)。

关于javascript - IE10 与 nth-child 和 nth-of-type 的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859142/

相关文章:

javascript - 如何使单元格中的表格成为变量?

jquery - 无法在 DataTables 中设置行类别

javascript - 更新 TodoList 上的项目 Angularfire

javascript - 如何使用for循环在javascript中创建对象

javascript - 在 iframe 标签中使用 pdfmake 生成 pdf

javascript - $(window).height() 在 IE10 中不起作用

html - session 存储在 IE 中不起作用

javascript - 了解 Javascript 模块和插件中的复杂范围

asp.net - ImageButton 在 IE10 上不会触发回发

javascript - 如何根据 xml 节点的值分配一个类?