加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

javascript – IE从控制台调用时支持forEach(…),但从代码调用

发布时间:2020-12-14 22:59:44 所属栏目:资源 来源:网络整理
导读:我在控制台上运行这个片段.在IE中,它按预期产生输出.在Cr和FF中运行相同的参考确认了行为的一致性. ["a","b"].forEach(function(element) { console.log(element);}); 但是,当运行以下脚本时,我收到错误,告诉我该对象没有在其上声明forEach().问题发生在IE中

我在控制台上运行这个片段.在IE中,它按预期产生输出.在Cr和FF中运行相同的参考确认了行为的一致性.

["a","b"].forEach(function(element) {
  console.log(element);
});

但是,当运行以下脚本时,我收到错误,告诉我该对象没有在其上声明forEach(…).问题发生在IE中,但不发生在Cr和FF中.

var menus = document.querySelectorAll("ul.application>li>a");
menus.forEach(function(element) { ... }

我已经检查过变量菜单被声明了,并且选择它的元素会产生我所期望的,即菜单[0]存在并且是一个标记.与其他人相比,它在IE中看起来有点不同,但它可能只是不同的再现.

我一直很幸运与Cr和FF合作,所以我处理IE的经验有限.谷歌搜索并没有给我太多智慧.

我该如何进一步排除故障?

最佳答案
基本上document.querySelectorAll会返回一个nodeList,一个像对象而不是数组的数组.在调用数组函数之前,必须将其转换为数组.

var menus = document.querySelectorAll("ul.application>li>a");
menus = [].slice.call(menus);
menus.forEach(function(element) { ... });

如果您的环境支持ES6,那么您可以使用Array.from()

var menus = document.querySelectorAll("ul.application>li>a");
menus = Array.from(menus);
menus.forEach(function(element) { ... });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读