2010-05-14 98 views
1
function Sort(td) 
{ 
    var t=document.getElementById("theList"); 
    var rows=t.getElementsByTagName("td"); 
    var cells=t.cells; 
    var bb=true; 
    while(bb==true) 
    { 
    alert(bb); 
     for(var i=1;i<rows.length;i++) 
     { 
      if(cells[td.cellIndex+i*4].innerText<cells[td.cellIndex+(i+1)*4].innerText) 
      { 

      } 
     } 
    alert("Works"); //this alert is not reached 
    } 
} 

第二個警告將不會顯示。你能告訴我爲什麼嗎?雖然不起作用

+2

你在頁面上看到一個javascript錯誤嗎?如果for循環在某個點出現錯誤,則第二個警報不會觸發。 – EndangeredMassa 2010-05-14 17:49:15

+0

可能因爲腳本執行在第一次警報之後和第二次警報之前終止。你的瀏覽器中是否有錯誤信息? (哪個瀏覽器是?) – 2010-05-14 17:51:35

+0

我使用Opera。沒有錯誤。它可以工作,但WHILE一次工作,不會返回。 – Artem 2010-05-14 17:54:57

回答

0

如果for循環中的任何代碼出現問題,它將不會達到第二個提醒。我建議在JS調試器中運行這個。

2

您的var rows是一個數組,它不具有屬性「單元格」。那可能是你的問題。

+1

+1。也想知道它是否應該是'var rows = t.getElementsByTagName(「tr」);'而不是'td' – 2010-05-14 18:06:10

+0

@Martin Smith:嗯......聽起來很可疑,這太有道理了。 – 2010-05-14 18:16:43

+0

@Martin:可能是對的。我感覺到他正在嘗試做什麼,但我不會以同樣的方式去做。我可能會使用嵌套for循環而不是一段時間。我幾乎*從來沒有*使用一個while循環,如果我能幫助它。 – Robusto 2010-05-14 18:18:14