为什么querySelectorAll不选择我所有的元素?
Why won't querySelectorAll select all of my elements?
在本例中,querySelectorAll选择td
元素2到4:
document.querySelectorAll("td + td");
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
那么,它将选择所有大于等于2的td
元素
但是在下面的示例中,当我使用:
时,'div'
没有选择我的div
元素:document.querySelectorAll('div').style.color = 'red';
<div>foo</div>
<div>bar</div>
演示为什么querySelectorAll不能在这个基本场景中工作?
querySelectorAll返回一个类似数组的对象(NodeList),所以你不能像那样设置所有匹配元素的属性(像jQuery一样)。你必须遍历它们:
var divs = document.querySelectorAll('div');
for(var i=0; i<divs.length; i++){
divs[i].style.color = "red";
}
注意:这与querySelector不同,querySelector总是返回单个元素。
你可以这样写一个辅助函数:
function qsa(selector, styleProperty, value){
var divs = document.querySelectorAll('div');
for(var i=0; i<divs.length; i++){
divs[i].style[styleProperty] = value;
}
return divs;
}
用法:
var divs = qsa('div', 'color', 'red');
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 在Jquery detachment()和appendTo()之后定位元素
- 在动态创建的元素上获取对特定选择器的引用
- 根据元素和容器大小计算边距