Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有两种方法可以循环遍历具有不同结果的JavaScript元素数组_Javascript_For Loop_Foreach - Fatal编程技术网

有两种方法可以循环遍历具有不同结果的JavaScript元素数组

有两种方法可以循环遍历具有不同结果的JavaScript元素数组,javascript,for-loop,foreach,Javascript,For Loop,Foreach,我有一个关于JavaScript循环的问题。我主要使用jQuery,但现在我决定用纯JavaScript制作一个简单的游戏 如果我用这个方法循环我所有的“td”,那么单元格[I]就是td元素,我可以将事件附加到它们 for(i = 0; i < cells.length; i++){ if(cells[i].nodeName == 'TD') { cells[i].onclick = function(){

我有一个关于JavaScript循环的问题。我主要使用jQuery,但现在我决定用纯JavaScript制作一个简单的游戏

如果我用这个方法循环我所有的“td”,那么
单元格[I]
就是td元素,我可以将事件附加到它们

    for(i = 0; i < cells.length; i++){
        if(cells[i].nodeName == 'TD')
        {
            cells[i].onclick = function(){
                // call funciton on onclick
            };
        }
    }

有什么区别?为什么foreach循环不能像我希望的那样工作?

cell
是一个数字,因为它是
cells
HTMLCollection的索引。在第二个循环中,您将使用如下值:

for(var cell in cells){
    if(cells[cell].nodeName == 'TD')
    {
        cells[cell].onclick = function(){
            GameTurnExecute(player);
        };
    }
}
你也可以说:

for(var cell in cells){
    if(cells.hasOwnProperty(cell))
    {
        cells[cell].onclick = function(){
            GameTurnExecute(player);
        };
    }
}
没有看到从原型链提交的属性。()


事实上,几乎每次在javascript中使用
时,您都希望使用hasOwnProperty。

单元格
不是
数组
,而是
HTMLCollection
节点列表
。您假设宿主对象具有原型继承,这是不合理的。它们根本不需要实现任何继承模式,而且在至少一个流行的主机环境中,它们也不需要。
for(var cell in cells){
    if(cells.hasOwnProperty(cell))
    {
        cells[cell].onclick = function(){
            GameTurnExecute(player);
        };
    }
}