javascript – 返回数组中的每个DOM元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 返回数组中的每个DOM元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1667字,纯文字阅读大概需要3分钟。
内容图文
我在实验中使用了3种方法来返回数组中的每个HTML元素:
> elementsArray.forEach(function(elem){})
> [].forEach(elementsArray,function(elem){})
> Array.prototype.forEach.call(elementsArray,function(elem){})
在我的HTML中,我有以下元素:
<section id="example">
<div></div>
<div></div>
<div></div>
</section>
第一个例子:
var query = document.querySelector.bind(document);
query('#example').children.forEach(function(elem) {
console.log(elem);
})
Uncaught TypeError: query(…).children.forEach is not a function
第二个例子:
var query = document.querySelector.bind(document);
[].forEach(query('#example').children, function(elem) {
console.log(elem);
})
Uncaught TypeError:
#<HTMLCollection>
is not a function
第三个例子:
var query = document.querySelector.bind(document);
Array.prototype.forEach.call(query('#example').children, function(elem) {
console.log(elem)
})
<div></div>
<div></div>
<div></div>
我的问题是,是什么让这三者在返回DOM元素方面彼此不同?我什么时候应该使用它们?
解决方法:
第一个例子:
元素的children属性是HTMLCollection,它没有forEach方法.所以这个选项不起作用.
第二个例子:
[].forEach(query('#example').children, function(elem) {
这会尝试使用子HTMLCollection作为回调函数.它不是一个功能,所以这不起作用.
你可以这样做:
[].forEach.call(query('#example').children, function(elem) {
第三个例子:
Array.prototype.forEach.call大致相当于[] .forEach.call方法,除了它不创建新的数组对象.这个会奏效.
另外一个选项:
另一个稍微不同的选择是使用querySelectorAll,它返回一个NodeList,它有一个forEach方法.
var queryAll = document.querySelectorAll.bind(document);
queryAll('#example > *').forEach(function(elem) {
console.log(elem);
})
但是,NodeList的forEach方法是一个新的添加,并且仍然缺乏浏览器支持.你可以填充它.
内容总结
以上是互联网集市为您收集整理的javascript – 返回数组中的每个DOM元素全部内容,希望文章能够帮你解决javascript – 返回数组中的每个DOM元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。