Javascript 为什么QuerySelector不选择我的所有元素?
在本例中,querySelectorAll选择td元素2到4:Javascript 为什么QuerySelector不选择我的所有元素?,javascript,dom,Javascript,Dom,在本例中,querySelectorAll选择td元素2到4: document.querySelectorAll("td + td"); <table> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> </table
document.querySelectorAll("td + td");
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
为什么QuerySelector不能在这个基本场景中工作?返回一个类似数组的对象,所以不能像jQuery那样设置所有匹配元素的属性。您必须对它们进行迭代:
var divs = document.querySelectorAll('div');
for(var i=0; i<divs.length; i++){
divs[i].style.color = "red";
}
请参阅:。它返回一个节点列表,它的行为类似于一个数组。我已经检查过了,但无法理解,现在看到下面的答案,我得到了一个概念。没有循环,我可以使用这样的东西吗?divs[].style.color=red非常感谢。但是我仍然很困惑,为什么这样做不需要一个循环,因为您正在从NodeList创建一个jQuery对象,而jQuery自动在元素上循环,而不需要您自己进行循环;哦我不在乎jquery。
var divs = document.querySelectorAll('div');
for(var i=0; i<divs.length; i++){
divs[i].style.color = "red";
}
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');