在 Safari 中对阵列进行 for-of 操作

for-of on Array in Safari

提问人:d3newguy 提问时间:1/16/2017 最后编辑:d3newguy 更新时间:1/16/2017 访问量:111

问:

请考虑以下代码:

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <div class="cell">div 1 text</div>
        <div class="cell">div 2 text</div>
        <div class="cell">div 3 text</div>
        <script type="text/javascript">
            let list = document.getElementsByClassName("cell")
                for(let y of list){
                    console.log("y:", y)
                }
        </script>  
    </body>
</html>

在 Chrome V55.0 中运行时,它会生成以下控制台输出:

y:        <div class="cell">div 1 text</div>
y:        <div class="cell">div 2 text</div>
y:        <div class="cell">div 3 text</div>

Firefox V50.1 也返回类似的结果。

但是,在 Safari 10.0.2 中运行时,同一文件会生成一个错误,指出

TypeError: y of list 不是一个函数。(在“y of list”中,“y of list”为>undefined)。

我不太确定如何处理这个错误。我做错了什么吗?

JavaScript 数组 Safari 未定义引用

评论

1赞 Scott Weaver 1/16/2017
尽管 Safari 10+ 说它有“基本支持”,但也许常规的旧 for 循环会起作用?of
0赞 Alex K. 1/16/2017
尝试添加 ?"use strict";
2赞 1/16/2017
那不是数组。Safari 可能还没有对 DOM 集合的迭代器支持(不确定)。尝试转换为数组:for (let y of Array.from(list)) {...
0赞 1/16/2017
我很想知道如果您改用它而不转换为数组,它是否有效。返回的集合类型不同。document.querySelectorAll(".cell")

答: 暂无答案