2011-08-27 85 views
0

这是一个Firefox插件,它有点令人迷惑,因为在某一点之后没有代码正在执行。Javascript:为什么JS停下来?

if (self.xmlDoc == null) return false; 


    var domain_and_full_destination=processing_domain.split(" "); 

    if(domain_and_full_destination[0]=="xxx.org") 
    { 
     //window.stop(); // Totally stop the page from loading. 

     self.root_node = ''; 
     self.root_node = self.xmlDoc.getElementsByTagName('joe_biden_is_a_moron'); 
     var destinations_array= new Array(); 

     for (var cci = 0; cci <= self.root_node.length; cci++) 
     { 
      self.second_node = ''; 
      self.second_node = self.root_node[cci]; 
      destinations_array[cci]=self.second_node.getElementsByTagName('riaum')[0].firstChild.nodeValue; 
     } 


alert(domain_and_full_destination[0]+"\n"); 

if的推移,但我把它剪短,因为我想知道为什么警报从未得到叫什么名字?

将我的戒备置于for循环中被调用,但for循环之后的任何内容都不会执行。

Firefox错误控制台中也没有错误。

+0

你能澄清一下吗? h提醒你指的是?我看到其中两个以上。 –

+0

你为什么不在Firebug中设置一个断点并自己找出来?这不是一个真正的问题。 – Tomalak

+0

对不起,拿出了一个警报。我不知道如何使用Firebug ... – Ryan

回答

1

你确定它没有投掷?你在那里做错了什么。

for (var cci = 0; cci <= self.root_node.length; cci++) 

应该

for (var cci = 0; cci < self.root_node.length; cci++) 

您所使用的<=其实也意味着,在循环的最后一次迭代,self.second_node实际上是设置为undefined,这将使self.second_node.getElementsByTagName('riaum')抛出异常。

+0

好吧,做了你所建议的改变,现在它正在抛出:'错误:self.second_node是未定义的' – Ryan

+0

好吧,使用警报我看到只有2个结果,但它计数0,1,2这是造成问题。仍然不知道它为什么没有在开始的错误CONSOL中显示,但你的答案是最接近的,所以我接受它。 Thakns每个人! – Ryan

1

缺少if语句的右括号...?

伊沃Stoykov

+0

不,我检查了第一次,我刚刚发布了第几行,直到它停止工作......如果没有到达那里,就不会发布其他内容... – Ryan

+0

您是否尝试过调试? – i100

+0

通过警报进行调试... – Ryan

1

你提到for循环被调用,但只是之前循环结束,看它是否遍历/退出循环可以提醒您。

如果您是初学者并且不知道如何使用调试工具,放置警报可以帮助您进行调试。然而,从长远来看,您可能希望使用这些工具来帮助您更快地完成工作。

+0

是的,只要我把它放在for的末尾,但不在外面 – Ryan

+0

对于从'0'到'self.root_node.length'的每次迭代,它都会弹出警告?正如你所说,它会抛出一个例外..意味着它不应该弹出警报。 –

0

尝试这一行devide成几个变量

destinations_array[cci]=self.second_node.getElementsByTagName('riaum')[0].firstChild.nodeValue; 

var riaum = self.second_node.getElementsByTagName('riaum')[0] || null; 
var child = riaum.firstChild || ''; 
var nodeVal = child.nodeValue || '?'; 
destinations_array[cci]=nodeVal; 

你必须添加检查什么在瓦尔...

HTH

伊沃Stoykov