猿问

document.querySelectorAll('body[direction="rtl"]

我正在尝试确定页面是否使用方向rtl还是ltr,我通过样式标签设置属性(在模板引擎中使用条件服务器端)

示例https://jsfiddle.net/ud2f6hre/3/

<body>


</body>

<style>

body {

  direction:rtl;

}


body[direction="rtl"] td{

  color:blue;

}


td {

color:green;

}

</style>

<table>

<tr>

  <td>ABC</td>

 <td>ABCDEF</td>

</tr>

</table>

<input type="button" onclick="test()" value="Test"/>

<script>

function test(){

console.log(document.querySelectorAll('body[direction="rtl"] td'))

}

</script>


为什么 document.querySelectorAll('body[direction="rtl"] td')返回一个空的 NodeList?


您还可以看到第二个 css 选择器不会将颜色更改为蓝色


冉冉说
浏览 135回答 1
1回答

波斯汪

属性选择器根据元素的属性而不是应用于它们的样式来选择元素。<body direction="rtl">你的HTML 中没有。选择器不匹配。类似的限制也适用于:dir()伪类::dir() 伪类仅使用方向性的语义值,即文档本身中定义的值。它不考虑样式方向性,即由 CSS 属性(例如方向)设置的方向性。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答