关于对象length属性的问题

新手上路,请多包涵

用document.getElementById获取的对象为元素本身,用.length查看对象长度为undefined,而用 getElementsByTagName获取的是一个collection,用.length获取长度为具体数字。imgList.length的长度为什么不是1?

   var imgList = document.getElementById("imgList");
   var imgArr = document.getElementsByTagName("img");
   console.log(imgList);
   console.log(imgArr);
   console.log(imgList.length);
   console.log(imgArr.lengyh);
   

结果为:
clipboard.png

阅读 3.8k
4 个回答

getElementById 返回的是一个对象,一个对象,这个对象本身就没有 length 属性
而 getElementsByTagName 返回的是一个集合,一个集合本身有长度属性。
有什么问题吗?人家获取元素本身没毛病啊,本来这个元素就没有 length 属性。
不是你把它叫做 List 就自动给你带长度的好不啦。

getElementById 返回 dom 对象所以没有 length 属性
getElementsByTagName 返回 dom 数组,类数组有 length 属性
没什么问题呀

举个例子就是

getElementById 里面找 length 就像问 你有几口人
getElementsByTagName 里面找 length 就像问 你们家有几口人

document.getElementById("imgList") ;css的id本身只能是唯一的人家为什么会返回数组给你呢?看到是一个对象啊; document.getElementsByTagName("img") css 的标签是不是可以有多个?以数组的形式返回是不是合理的;这么说是不是容易理解???

新手上路,请多包涵

document.getElementById("imgList") ;css的id本身只能是唯一的人家为什么会返回数组给你呢?看到是一个对象啊; document.getElementsByTagName("img") css 的标签是不是可以有多个?以数组的形式返回是不是合理的;这么说是不是容易理解???

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题