大佬教程收集整理的这篇文章主要介绍了为什么JavaScript的getElementsByClassName提供的对象不是数组?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var expand_buttons = document.getElementsByClassName('expand'); console.log(expand_buttons,expand_buttons.length,expand_buttons[0]);
请注意,我的页面上有三个锚元素,类为“expand”.这个console.log()输出
[] 0 undefined
接下来,对于踢,我将expand_buttons扔到它自己的数组中,如下所示:
var newArray = new Array(expand_buttons); console.log(newArray,newArray.length);
这突然输出
[NodeList[3]] 1
我可以点击节点列表,查看页面上三个“展开”锚元素的属性.值得注意的是,我能够让我的代码在w3schools test page中运行.
还可能需要注意的是,我对document.getElementsByName的使用实际上输出(到控制台)一个元素数组,但是当我要求它的长度时,它告诉我0.同样,如果我尝试使用它来访问数组元素array_name [0]正常,它输出’undefined’,尽管当我将对象打印到控制台时,数组内部显然有一个元素.
有没有人知道为什么会这样?我只想循环遍历DOM元素,而我现在正在避免使用jQuery,因为我正在尝试使用vanilla JavaScript进行编码.
谢谢,
ParagonRG
您始终可以将NodeList复制到新阵列:
var nodeArr = Array.prototype.slice.call(theNodeList,0);
或者在现代ES2015环境中:
var nodeArr = Array.from(theNodeList);
JavaScript总是存在于某些运行时上下文中,并且上下文可以包括为JavaScript代码提供工具的各种API. Web浏览器是这些上下文之一. DOM的指定方式并不特别局限于JavaScript;它是一种与语言无关的接口定义.
我想这个答案的简短版本是“因为它确实存在.”
以上是大佬教程为你收集整理的为什么JavaScript的getElementsByClassName提供的对象不是数组?全部内容,希望文章能够帮你解决为什么JavaScript的getElementsByClassName提供的对象不是数组?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。