javascript - 从 CSS 到 Javascript 的属性值

标签 javascript css

有一种方法可以像这样在 CSS 中选择某个数据:

  td[data-cell|="n"] {
       background-color: red;
       margin-top: 10px;
      ...
     }

其中 n - 是 td 的数据单元 属性的开始。

如何在 Javascript 中使用这个选择器的组合?因为 JS 会将其识别为数组并返回错误。

最佳答案

所有现代浏览器都支持 querySelector()对于单个元素,querySelectorAll()对于一组元素。传递给这些函数的参数是一个 CSS 选择器。因此您的选择器将保持不变。

var firstTD = document.querySelector('td[data-cell|="n"]');

var firstTD = document.querySelectorAll('td[data-cell|="n"]')[0];

querySelectorAll has nothing to do with ES6, 5, or any other ECMAScript. - dfsq

感谢您指出这一点。出于某种原因,我认为它依赖于 ES6。相反,它是 Web API 的一部分,为现代浏览器原生实现。

为了向后兼容,您可以使用选择器库,例如 jQuery。

var firstTD = $('td[data-cell|="n"]')[0]; // or .eq(0)

^ is not the same thing as |= - Juhana

我完全同意。这条线让我失望了......

Where n - is a beginning of td's data-cell attribute. - Alexandr Belov

不知道 data-cell 的值采用什么形式,我不确定他是否想要一个真正的“开始于”。要获得真正的“开始于”,您需要 ^=

来自 w3 css selectors spec :

[att|=val]
Represents an element with the att attribute, its value either being exactly "val" or beginning with "val" immediately followed by "-" (U+002D).


或者,您可以使用 dataset property 访问 DOM 元素的数据属性:

document.querySelectorAll('td').forEach(function(obj, idx, arr) {
    // simulate '|=' filter
    if(obj.dataset.cell &&
       (obj.dataset.cell === "n" ||
        obj.dataset.cell.startsWith("n-"))) {
         alert(obj.dataset.cell);
    }
});

关于javascript - 从 CSS 到 Javascript 的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479197/

相关文章:

javascript - 严格模式默认绑定(bind) "this"关键字

javascript - 使用 angularjs 和 ngPattern 验证 UTF-8 名称

javascript - Jest spy 不能在不同的目录中工作吗?

javascript - 如何使用 JavaScript 访问 CSS 规则集的各个样式?

javascript - 在某些点之后强制滚动触发

像电子书网站一样的javascript鼠标时间延迟

java - 使用 Rhino 从 Clojurescript 生成 Java 类

php - 如何显示彼此相邻的四个类别帖子? - WordPress的

javascript - 在 HTML 网站中嵌入第三方内容

javascript - 单击带有 navbar-toggle 类的按钮时,将出现大的下拉 div