1

我的 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'声明移动到函数的顶部”-但是当我这样做时,它只是再次说了同样的话。

有没有人可以告诉我那段代码有什么问题。还是它可能太难或太难了,应该以更简单的方式完成?

谢谢!

4

1 回答 1

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);
    });
});
于 2013-08-05T07:31:34.243 回答