javascript - CSS/JS 选择器 - 选择类不等于的最后一个元素

标签 javascript css select element

我正在尝试从 HTML 表中获取 latest td 标记,其中 latest tr 是最新的 td-tag 应该disabled 类。

我使用 CSS 选择器在纯 JavaScript 中执行此操作(请不要使用 jQuery!)。我尝试了几种可能性,但都返回 null 或“无效选择器”消息。还有发布在 here 中的解决方案对我不起作用。

我的一些尝试:

var table = document.getElementById('example');
var test1 = table.querySelector('tr:last-child > td:nth-last-child(:not(.disabled))');
var test2 = table.querySelector('tr:last-child > td:nth-last-child:not(.disabled)');
var test3 = table.querySelector('tr:last-child > td:nth-last-child(1 of :not(.disabled))');
var test4 = table.querySelector('tr:last-child > td:not(.disabled):last-child');

例如:

<table id="example">
    <tr>
        <td> ... </td>
        <td class="disabled"> ... </td>
        <td> ... </td>
    </tr>
    <tr>
        <td class="disabled"> ... </td>
        <td> ... </td>
        <td> ... </td>
    </tr>
    <tr>
        <td> ... </td>
        <td> Value I want </td>
        <td class="disabled"> ... </td>
    </tr>
</table>

在这里我需要值我想要的值,但我无法获取它。有人知道出了什么问题吗?

最佳答案

CSS 没有“last”伪类,:last-child:last-of-type 不适用于您想要的。

由于您似乎想用 JavaScript 选择元素,所以很简单:选择所有没有 .disabledtd 并取最后一个:

var list = document.querySelectorAll("td:not(.disabled)");
var last = list[list.length - 1];

或范围为该表:

var list = document.querySelectorAll("#example td:not(.disabled)");
var last = list[list.length - 1];

例子:

var list = document.querySelectorAll("#example td:not(.disabled)");
var last = list[list.length - 1];
console.log(last.innerHTML);
<table id="example">
    <tr>
        <td> ... </td>
        <td class="disabled"> ... </td>
        <td> ... </td>
    </tr>
    <tr>
        <td class="disabled"> ... </td>
        <td> ... </td>
        <td> ... </td>
    </tr>
    <tr>
        <td> ... </td>
        <td> Value I want </td>
        <td class="disabled"> ... </td>
    </tr>
</table>

关于javascript - CSS/JS 选择器 - 选择类不等于的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48599681/

相关文章:

javascript - 从集合中添加或删除项目以及提升的效果

javascript - 将计算结果设置为 ng 样式标记 Angular.js 中的百分比

html - 在 <td> 元素(表列)上组合 colspan 和样式 ="width:10px;"

存储过程中的 MySQL select 语句返回的结果与过程外部不同

java - Hibernate - 更新/选择后的结果相同

c# - 如何通过 MVVM 在 WPF Web 浏览器控件上使用 Javascript

javascript - scrollTop 和 scrollLeft 在显示 :none elements 上不起作用

css - 为什么用 $.ajax() 加载的元素不显示 jQuery Mobile CSS?

mysql - 如何重新计算 GROUP 上的字段

javascript - 在新窗口中打开表单结果