Javascript 在一个变量中存储多个查询选择器的最佳方法
我这里有一些简单的HTML:Javascript 在一个变量中存储多个查询选择器的最佳方法,javascript,Javascript,我这里有一些简单的HTML: <div class='one'> <p>one</p> <p>one</p> <p>one</p> </div> <div class='two'> <p>two</p> <p>two</p> <p>two</p> </div> 代码笔: code
<div class='one'>
<p>one</p>
<p>one</p>
<p>one</p>
</div>
<div class='two'>
<p>two</p>
<p>two</p>
<p>two</p>
</div>
代码笔:
code nodes变量实现了我想要的:两个节点列表的串联。为了简洁起见,有没有更好的写作方法?如果我是正确的,您不能在节点列表上使用concat方法,因为它们是特定于数组的-并且使用spread操作符使其与IE不兼容
谢谢您的建议。为什么不使用一个带有两个选择器的
queryselectoral()
:
var nodes=document.querySelectorAll('.one p,.two p');
console.log(nodes.length)代码>
一个
一个
一个
两个
两个
两个
为什么不使用一个带有两个选择器的查询选择器all()
:
var nodes=document.querySelectorAll('.one p,.two p');
console.log(nodes.length)代码>
一个
一个
一个
两个
两个
两个
这在IE或旧版本的浏览器中不起作用,您必须使用polyfill@HusseinAl-Mosawi,你真的想要IE11的支持吗?这只是对OP和其他人的提醒,我们只需要支持IE11。非常好的JS,即使我们不需要支持IE!感谢you@user8758206,删除数组。从
应在ie11中工作,更新了答案,请检查:)这在IE或旧版本的浏览器中不起作用您必须使用polyfill@HusseinAl-Mosawi,你真的想要IE11的支持吗?这只是对OP和其他人的提醒,我们只需要支持IE11。非常好的JS,即使我们不需要支持IE!感谢you@user8758206,删除数组。从应该在ie11中起作用,更新了答案,请检查:)如果您只想使用示例,但想支持IE,您可以使用此polyfill,只需将其置于所有脚本标记之上,以确保浏览器首先加载它或var nodes=Array.prototype.slice.call(one.concat)(Array.prototype.slice.call(twos));
如果您只想使用示例,但想支持IE,您可以使用此polyfill,只需将其置于所有脚本标记之上,以确保浏览器首先加载它,或者var nodes=Array.prototype.slice.call(ones).concat(Array.prototype.slice.call(twos));
var nodes = [],
ones = document.querySelectorAll('.one p'),
twos = document.querySelectorAll('.two p');
nodes = [...ones, ...twos];
console.log(nodes.length);