有两种方法可以循环遍历具有不同结果的JavaScript元素数组
我有一个关于JavaScript循环的问题。我主要使用jQuery,但现在我决定用纯JavaScript制作一个简单的游戏 如果我用这个方法循环我所有的“td”,那么有两种方法可以循环遍历具有不同结果的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(){
单元格[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);
};
}
}