Javascript 循环的Coffescript不使用已创建的其他变量

Javascript 循环的Coffescript不使用已创建的其他变量,javascript,for-loop,coffeescript,Javascript,For Loop,Coffeescript,因此,我对使用coffescript还不熟悉,我不知道自己做错了什么。我使用while循环使其工作,但我只想知道如何使用for循环使其工作。循环只运行一次,并返回一个错误“UncaughtTypeError:无法读取未定义的属性'style'” 我的cs代码如下所示: function = (col) -> for squares in squares squares.style.background = col js输出: changeColor = funct

因此,我对使用coffescript还不熟悉,我不知道自己做错了什么。我使用while循环使其工作,但我只想知道如何使用for循环使其工作。循环只运行一次,并返回一个错误“UncaughtTypeError:无法读取未定义的属性'style'”

我的cs代码如下所示:

function = (col) ->
    for squares in squares
        squares.style.background = col
js输出:

changeColor = function(col) {
  var j, len;
  for (j = 0, len = squares.length; j < len; j++) {
    squares = squares[j];
    squares.style.background = col;
  }
};
changeColor=函数(col){
var j,len;
对于(j=0,len=squares.length;j
正在接受js输出:

changeColor = function(col) {
  var j;
  for (j = 0; j < squares.length; j++) {
    squares[j].style.background = col;
  }
changeColor=函数(col){
var j;
对于(j=0;j

据我所知,转换后的js是正确的,但它不会接受声明的其他变量。尽管如此,我可能是错的。谢谢您的帮助。

通常,如果Coffeescript(以及Javascript)向您发送了一条错误消息,其中包含
未定义的
,而您的调用目标不存在

所以在你的例子中,它说,
squares
未定义的
未定义的
确实没有名为
background
的属性。我怎么知道这一点呢?仅仅是因为使用的唯一一行whery
style

squares.style.background = col
因此,
style
squares
上被调用,
squares
未定义

现在,下一个问题显然是为什么
squares
未定义。我猜:在您的文档中没有类
squares
的html元素。只需执行以下操作即可

squares = document.querySelectorAll(".square")
console.log(squares)

要查看对
querySelectorAll
的调用产生了什么

你是说
对于正方形中的正方形
?@muistooshort Hi.抱歉。但我不这么认为。“squares”是我在cs/js中使用的变量,“squares”是我在html中使用的类。我尝试使用square并呈现了以下结果。
(i=0,len=squares.length;i
但是你说的是,基本上,
用于x中的x
,这是没有意义的。你不希望循环变量的名称与迭代的名称相同。因此,我建议对平方中的平方使用
,而不是对平方中的平方使用
。嗨,谢谢你的回答。在但是我的html。很抱歉,我对我的文件使用了相当混乱的命名。Chrome控制台:[div.square,div.square,div.square,div.square,div.square]
squares = document.querySelectorAll(".square")
console.log(squares)