2010-01-23 38 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

相关问题