2013-10-14 49 views
0

嗯,我試圖寫一個條件在Java腳本時,突然它發生了,我開始得到消息3至4次而不是隻是一次我第一次定義這兩個變量,然後寫了代碼我嵌套,如果else語句,然後關閉所有的人,但恰巧有一個無限循環created.I試過如下: -對於無限循環

function setValue(){ 
    myVariable1= document.forms["myform"]["ram"].value; 
    var xuv = ["go", "no", "yes"]; 

    for (i=0;i<xuv.length;i++) 
    { 
     if (myVariable1 === xuv[0]) 
     {  
      alert("yes this game can run") 
     } 
     else 
     {  
      alert("No, This game cannot run") 
     } 
    } 
}; 
+1

你在哪裏調用'setValue'?除了少數缺少['var'聲明](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var)('myVariable1','i')外,它看起來不錯。 – Bergi

+1

這是不可能的,因爲它是一個無限循環(除非你重寫'alert'來改變全局'i')。獲得3到4次的信息是正常的,因爲你正在'警告'一個信息或另外3次。 – Ryan

+0

檢查你的btn事件處理程序。您可能會多次訂閱活動。此外,您的循環將始終以3次警報運行3次,以執行一次setValue調用。放在成功的條件下。 –

回答

2

我覺得你的意思索引數組:

if (myVariable1 === xuv[i]) 

目前你只是檢查每個迭代xuv[0]循環的重刑。因此,如果xuv[0]滿足您的條件,並且循環重複幾次,您將看到您的消息幾次。如果沒有,你永遠不會看到它。

如果它是一個無限循環那麼你永遠不會停止看到吧...

0
function setValue(){ 
    myVariable1= document.forms["myform"]["ram"].value; 
    var xuv = ["go", "no", "yes"]; 
    var canRun = false; //i asume the programm can't run 

    for (i=0;i<xuv.length;i++) 
    { 
     if (myVariable1 === xuv[i]) //changed from 0 to i here 
     { 
      //but when my input is in the array it can run 
      canRun = true; 
     } 
    } 

    if (canRun) 
    { 
     alert("yes this game can run"); 
    } 
    else 
    {  
     alert("No, This game cannot run"); 
    } 
}; 

您的問題是,你檢查3次,如果你輸入go。 我想你要做的是檢查你的輸入是否在數組中。 您還希望打印只是一個警告,我做的if-block循環

+0

謝謝@Philipp Sander非常感謝你解決我的代碼非常感謝你,如果這個應用程序給出了很好的結果,我一定會提及你,謝謝你sooo並且謝謝你在這種困難的情況下幫助我的人 – user2826868

0

後,因爲你是在一個循環中比較相同的索引等等條件總是很真實,它的警覺,甚至條件不滿足它會提醒3次,直到你打破循環或達到停止條件:

function setValue(){ 
    var myVariable1= document.forms["myform"]["ram"].value;//add var otherwise it would expect it as global 
    var xuv = ["go", "no", "yes"]; 

    for (var i=0;i<xuv.length;i++) 
    { 
     if (myVariable1 === xuv[i]) //changed from 0 to i here 
     {  
      alert("yes this game can run"); 
      return; 
     } 
     else 
     {  
      alert("No, This game cannot run"); 
      return; 
     } 
    } 
}; 
+0

這將返回1次迭代後 –

+0

只有一個警報將發生,因爲OP想要 –

+0

是的,但是呃希望'它運行'作爲輸入'是' –