为什么这不是有效的代码?

时间:2013-08-05 05:47:05

标签: javascript yui addclass yui3 parent-node

我的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 个答案:

答案 0 :(得分:1)

我不确定您的HTML是什么样的,但如果您尝试为每个级别添加类名,我会像Y.eachY.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);
    });
});