我的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'声明移到函数的顶部” - 但是当我这样做时它只是再说同样的事情。
是否有人可以告诉我这段代码有什么问题。或者它可能太难或难以应对,应该以更简单的方式完成?
谢谢!
答案 0 :(得分: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')
不存在,这将传递一个linter并且不会失败。
这适用于多级节点:
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);
});
});