Почему это недействительный код?
У меня есть этот кусок кода в моем файле JavaScript (я работаю с YUI):
var levels = [2, 3, 4, 5, 6, 7, 8, 9];
for(var i = 0; i < levels.length; i++) {
var level = levels[i];
Y.all(".level"+level).get('parentNode').addClass("category_level"+level);
};
Теперь, если у меня есть это право в конце моего файла JavaScript, он работает нормально. Однако, если у меня есть это впереди другого кода, ни один из моих других кодов (функций) больше не работает.
Далее я выделил проблему для этого фрагмента кода: .get ('parentNode') - когда я убираю этот бит, весь другой код и функции снова работают.
Я не уверен, но я думаю, что мне может понадобиться что-то вроде:
var nodes = Y.all(".level"+level);
nodes.each(function(node){ ...
node.get('parentNode').......
но я изо всех сил пытаюсь применить это к моему куску кода наверху.
Спасибо!
ОБНОВИТЬ
Этот кусок кода недействителен по некоторым причинам:
var levels = [2, 3, 4, 5, 6, 7, 8, 9];
for(var i = 0; i < levels.length; i++) {
var level = levels[i];
Y.all(".level"+level).get('parentNode').addClass("category_level"+level);
};
Когда я вставляю это в http://www.jslint.com/ это настолько неправильно, что он даже не может отсканировать это! "Ошибка синтаксиса JavaScript и не может продолжать надежно анализировать программу"
Что такого плохого в этом куске кода? Он говорит: "Переместить объявления var в начало функции", но когда я это делаю, он снова говорит то же самое.
Может быть, кто-нибудь скажет мне, что не так с этим фрагментом кода. Или, может быть, это слишком сложно или плохо и должно быть сделано более простым способом?
Спасибо!
1 ответ
Я не уверен, как выглядит ваш HTML, но если вы пытаетесь добавить имя класса для каждого уровня, я бы использовал Y.each
а также Y.one
вот так:
var levels = [2, 3, 4, 5, 6, 7, 8, 9];
Y.each(levels, function (level) {
var node = Y.one(".level"+level);
if(node) {
node.get('parentNode').addClass('category_level' + level);
}
});
Это будет проходить через линтер, а не потерпит неудачу, если Y.one('.level199')
не существует.
Это будет работать для нескольких узлов уровня:
var levels = [2, 3, 4, 5, 6, 7, 8, 9];
Y.each(levels, function (level) {
Y.all(".level"+level).each(function (node) {
node.get('parentNode').addClass('category_level' + level);
});
});