2012-12-08 37 views
2

我寫過一個程序,每次按下按鈕時都會彈出警告框。問題是,我的一個功能表現得相當不可思議,我無法弄清楚爲什麼。有時候這個功能不起作用,有時候它會完全阻止程序發送其他功能負責的警報。我嘗試使用的語法有什麼問題嗎?我已經嘗試了很多的變化...JavaScript函數打破整個程序?

這種簡單的事情的作品:

function popup(){ 
     alert(5+6); 
}; 

這不:

function popup(){ 
      c = 0; 
       if(c=0){ 
        alert(5+6); 
       } 
}; 

這可以防止整個程序不能正常工作:

function popup(){ 
     x=0 
     y=0 
     while(x=0;x<array.length;x++) 
      if(y>0){ 
       alert(5+6); 
      } 
      else(y=0){ 
       alert(1+2) 
       y++ 
      } 
    }; 
+0

否則(Y = 0) 你的意思是: 其他(Y == 0) - 你正在做一個分配新建分配FY –

+0

這不是「循環」工作的方式。我認爲你要去那裏「for」循環。 – Niko

+2

我認爲這是一個語法錯誤,並且確實會停止整個程序的運行。你應該在控制檯中得到一個關於它的錯誤。 – Thilo

回答

3

您可能的意思是

else if (y==0){ 

,而不是y以0

else(y=0){ 

y=0套,並始終返回0,無論y的值是以前。

while需要一個語句作爲條件(請參閱reference)。你的while循環可能檢查x ++的結果,所以它永遠不會結束。

你應該有一個for循環。

在進入測試值的循環之前將y設置爲0非常奇怪。我想你應該是array[x]

function popup(){ 
    for (x=0; x<array.length; x++) { 
     var y = array[x]; // just a guess, but this seems reasonnable 
     if (y>0){ 
      alert(5+6); 
     } else if (y==0) { 
      alert(1+2); 
      y++; 
     } 
}; 

但將所有的;和格式化/縮進正確的代碼可能會避免你很多麻煩。

我建議堅持Google's javascript style guidelines

+0

嗯謝謝你我會試試看,出於某種原因,代碼在網站上沒有正確縮進,所以看起來有點奇怪。 – user1887614

+1

@dystroy你沒有真正解釋==是比較運算符,而=是用於賦值的。 –

+0

@IanAtkin我嘗試解釋它,但是如果if也丟失了,並且循環有一段時間而不是循環,那麼解碼代碼的方式有點難以破譯。 –

3

我想你想在這裏做一個for循環。

if(y = 0)作出分配,而不是比較。

else(y = 0){應該是「else if」。 「else if」進行比較,其中as-else在if爲false之前變爲true。

好像你的數組沒有初始化? - 或者這是更早的初始化?

我覺得這是更接近你想要什麼?:

function popup() { 
    y = 0; 
    for (var x = 0; x < array.length; x++) { 
     if (y > 0) { 
      alert(5 + 6); 
     } 
     else if (y == 0) 
     { 
      alert(1 + 2); 
      y++; 
     } 
    } 
} 
+0

是的,謝謝你的工作:)我不知道爲什麼我的功能禁用其他彈出窗口(除了可能是我的不良分配操作符),但這作品。謝謝您的幫助! – user1887614

+0

你能接受答案嗎? 另外,正如Thilo所評論的那樣。檢查你的瀏覽器控制檯,它通常會告訴你錯誤在哪裏:) –