2010-01-23 71 views
0

使用Mozilla噴氣包,當我做下面的代碼..我得到的連接是未定義的!爲什麼?或如何解決它?爲什麼循環內部使用[i]的值未定義?

var links = doc.querySelectorAll('#courses_menu > ul > li > a'); 
var linkz=links[1].href.split("?"); 

var i = 0; 
for (i=0;i<=4;i++) 
{ 
    var linking= links[i]; 
} 
jetpack.notifications.show(" "+ linking); 

回答

0

因爲它在循環結束時超出範圍。

所以,你應該有

var linking; 
for (i=0;i<=4;i++) 
{ 
    linking= links[i]; 
} 

但此外,你有什麼想在這裏做什麼?您重寫連接四次。你想顯示所有的鏈接?如果是這樣,你可以像它們連接它們:

var linking = ""; 
for (i=0;i<=4;i++) 
{ 
    linking = linking + links[i] + " "; 
} 

編輯:評論者是正確的;我確實忘記了在Javascript中沒有塊範圍。這是否修復了你的代碼?我無法想象它的確如此。我能想到的唯一的其他事情是links[4]未定義,然後您將分配undefinedlinking

無論如何,我無法刪除它,因爲它已被接受,但如果有人提出了更有用的答案,請隨時取消接受此答案。

+0

謝謝你..你是對的..我不能相信這並沒有跨越我的腦海! – msheshtawy 2010-01-23 02:23:01

+0

不是我的知識,或者我的自發測試。 Javascript保持功能範圍,而不是範圍範圍。在for循環中聲明的任何變量都可以在函數的其餘部分訪問,直到函數返回。 – seanmonstar 2010-01-23 02:25:52

+0

@seanmonster:如果你在for循環中聲明它(例如'for(var i ...'),它只存在於for循環中。 – Anonymous 2010-01-23 02:29:57

相關問題