HTMLCollection的长度和元素个数不一样,这是咋回事??

新手上路,请多包涵

mounted() {

this.initMap()
if (this.vcAttributes[0].dates.start){
  this.$refs.calendar.move(this.vcAttributes[0].dates.start)
}

let weekdays = document.getElementsByClassName('vc-weekday')

this.$nextTick(() => {
  console.log(weekdays.length)
  console.log(weekdays)
  for (let i = 0; i < weekdays.length; i++) {
    let weekday = weekdays.item(i)
    weekday.addEventListener('click', () => {
      console.log(weekday.innerHTML)
      console.log('添加事件'+i)
    },{capture: false, once: false, passive: false})
  }
})

},

控制台打印:
image.png

阅读 2.5k
1 个回答

你用 Array.from() 转换一下,他就一样了。

首先,是因为 console 打印的是快照,所以显示的其实就是最后的结果。

其次,浏览器 HTMLCollection 这个东西他就是会变的。比如说你现在看14个,你增加一个新的到dom中,你会发现再点开就变15个了。

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