2013-08-05 33 views
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')....... 

但我掙扎得到這個適用於我在上面的代碼。

謝謝!

UPDATE

這段代碼並不適用於某些原因:

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

你檢查你的Javascript控制檯? –

+0

是啊,我查過了,似乎沒有發現任何錯誤: – user1525612

+0

Ooops,實際上使用記事本+和jslint說'停止(3%掃描)'之前它可以得到我的一段代碼! – user1525612

回答

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')不存在,則棉絨也不會失敗。

這會爲多級節點的工作:

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); 
    }); 
}); 
+0

感謝喬納斯,就是這樣! if語句現在可以工作,因爲我確實有一些這些級別不在我的HTML中。 Y.one()現在確實會引發更多問題,因爲我有不止一個地方出現這些類,而這隻會將類添加到第一個類中。但是這有很大的幫助,我會盡力將其他人排除在外;) – user1525612

+0

不客氣!我更新了我的答案以適應您的需求。 –

+0

太棒了!這得到了巨大的幫助,謝謝! – user1525612