为什么循环内部的值和使用[i]的值是未定义的?

时间:2010-01-23 02:19:33

标签: javascript for-loop firefox-addon firefox-addon-sdk

使用Mozilla jetpack,当我执行以下代码时...我得到的链接是未定义的!为什么?或者如何解决它?

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); 

1 个答案:

答案 0 :(得分: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]未定义,然后您将undefined分配给linking

无论如何,我无法删除它,因为它已被接受,但如果其他人提出了更有用的答案,请随意取消接受此答案。