2017-01-25 7 views
-1

Так что я новичок в использовании coffescript, и я не могу понять, что я делаю неправильно. Я заставил его работать, используя цикл while, но я просто хочу знать, как я могу заставить его работать, используя цикл. Цикл выполняется только один раз и возвращает ошибку в «неперехваченным TypeError: Не удается прочитать свойство„стиль“неопределенных»Coffescript for-Loop не работает с дополнительной переменной Создано

squares = document.querySelectorAll(".square") 

мой CS код выглядит следующим образом:

function = (col) -> 
    for squares in squares 
     squares.style.background = col 

расслоение плотной выход:

changeColor = function(col) { 
    var j, len; 
    for (j = 0, len = squares.length; j < len; j++) { 
    squares = squares[j]; 
    squares.style.background = col; 
    } 
}; 

выход которого расслоение плотной Принимается:

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

В моем понимании преобразованные js верны, но не будут принимать объявляемые дополнительные переменные. Тем не менее я могу ошибаться. Спасибо за любую помощь.

+1

Не вы имеете в виду 'для площади в squares'? –

+0

@muistooshort Hi. Сожалею. Но я так не думаю. «квадраты» - это переменная, которую я использовал в cs/js, а «square» - это класс, который я использовал в html. Я попытался использовать квадрат и сделал следующий результат. – rusty

+0

'для (i = 0, len = squares.length; i rusty

ответ

0

В общем случае, если Coffeescript (и, следовательно, Javascript) дает вам сообщение об ошибке, которое содержит undefined, чем цель вашего вызова не существует.

Так что в вашем случае говорится, что squares is undefined и undefined действительно не имеет собственности по имени background. Откуда я знаю это? просто потому, что единственная линия whery style используется в

squares.style.background = col 

так style вызывается squares и squares не определен.

Теперь следующий вопрос, очевидно, почему is squares undefined. Мое предположение: в вашем документе нет элемента html с классом square. Просто сделайте

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

, чтобы увидеть, что этот призыв к querySelectorAll дает

+0

Привет. Благодарю за ваш ответ. Однако в моем html есть квадратный класс. Прошу прощения, поскольку я использовал довольно запутывающее имя для моих файлов. Chrome Console: [div.square, div.square, div.square, div.square, div.square, div.square] – rusty