javascript – forEach回调不会使用getElementsByClassName执行

前端之家收集整理的这篇文章主要介绍了javascript – forEach回调不会使用getElementsByClassName执行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在下面的代码中,

  1. Meta charset="UTF-8">
  1. /* hideOddRows.js */
  2. document.querySelector('[name=HideRows]').onclick = hideRows;
  3. function hideRows(){
  4. var elements = document.getElementsByClassName('hide');
  5. elements.forEach(function(element){
  6. element.style.visibility = "hidden";
  7. });
  8. return true;
  9. }

根据调试,元素数组的每个元素的回调函数不会在click事件上执行.

我将元素视为键控集合,如下所示.

enter image description here

如何解决错误

最佳答案
forEach不包含在getElementsByClassName返回的类似数组的HTMLCollection对象的原型中.

HTMLCollection实例类似于数组,因为您可以通过索引访问元素,但它不包括数组的所有方法,正如您在forEach中发现的那样.

但是,您可以通过从Array原型访问方法来手动调用对象上的方法.

  1. var elements = document.getElementsByClassName('hide');
  2. Array.prototype.forEach.call(elements,function(element){
  3. element.style.visibility = "hidden";
  4. });

猜你在找的JavaScript相关文章