2016-11-13 111 views
0

我正在製作一個有數字數組的程序,然後用戶輸入一些值並點擊驗證。他輸入的值必須按照數組的順序排列,如果不是,則用戶會收到警報消息。然而,第一個輸入欄內的值決定了比較應從哪個數組開始。例如,如果數組保存{2,4,6,8,10} 之類的數字,並且用戶在第一個輸入欄中輸入6,然後他在下兩個欄中輸入8和10,則他應該得到結果「 678「但是,如果他沒有得到第一個數字,可以說他輸入了3,並且因爲3不在數組中,那麼無論他在其他輸入欄中輸入什麼內容都無關緊要,他會得到結果」抱歉」。同樣,如果用戶在第一個輸入欄中輸入4,然後在第二個欄中輸入8,他仍然會得到結果「Sorry」,因爲數組的順序是{4,6,8}而不是{4, 8} ..現在,我做了一個程序,但事情是,只要我點擊驗證按鈕,什麼也沒有發生:/ ..這裏是我的代碼。而這裏也是結果我得到:https://jsfiddle.net/53j19rpt/Javascript和html:按鈕不起作用

<html> 

<head> 
</head> 
<script type="text/javascript"> 
    var arr = []; 
    var t; 
    var num = 2; 
    var x = []; 
    for (var x = 0; x < 4; x++) { 
     document.getElementById("one" + x); 
    } 

    function go() { 
     for (var t = 0; t < 4; k++) { 
      x[t] = num * (t + 1); 
     } 
     for (var k = 0; k < 4; k++) { 
      if (document.getElementById("one0").value >= x[k]) 
       if (document.getElementById("one" + k).value == x[k]) 
        document.write(document.getElementById("one" + k).value); 
       else 
        document.write("Sorry"); 
     } 
    } 
</script> 

<body> 
    <input id="one0" type="text"> 
    <input id="one1" type="text"> 
    <input id="one2" type="text"> 
    <input id="one3" type="text"> 
    <input type="button" id="verifyBtn" value="verify" onclick="go()"> 
</body> 

</html> 

回答

0

檢查這個

for (var t = 0; t < 4; k++) { 
      x[t] = num * (t + 1); 
     } 

代碼是怎麼回事了一個無限循環。 t的值在代碼中沒有增加。

+0

仍然沒有工作..:/ –

+0

我仍然沒有得到任何輸出 –

0

這裏有多種問題:

  1. x首先被聲明爲數組(即var x = [];,但之後隨即說,x被用作for循環(即for (var x = 0; x < 4; x++) {迭代器)之後。在功能go(),開始到x賦值時,它試圖訪問x[t],不爲整數的工作,以便在迭代器使用不同的變量:

    for (var x = 0; x < 4; x++) { document.getElementById("one" + x); }

  2. 在第二個for循環中,變量t不會遞增,這會導致無限循環。增量爲t,而不是k

    for (var t = 0; t < 4; t++) {

  3. if語句沒有大括號,這會導致只剩下一行要執行...雖然在序列兩個if語句會之後的第二,如果當兩個條件評價爲仍執行該語句true。如果在if表達式之後需要多行代碼,則將它們包裹在花括號中。

請參見下面的例子:

var arr = []; 
 
var t; 
 
var num = 2; 
 
var x = []; 
 
for (var h = 0; h < 4; h++) { 
 
    document.getElementById("one" + x); 
 
} 
 

 
function go() { 
 
    for (var t = 0; t < 4; t++) { 
 
    x[t] = num * (t + 1); 
 
    } 
 
    for (var k = 0; k < 4; k++) { 
 
    if (document.getElementById("one0").value >= x[k]) { 
 
     if (document.getElementById("one" + k).value == x[k]) { 
 
     document.write(document.getElementById("one" + k).value); 
 
     } 
 
     else { 
 
     document.write("Sorry"); 
 
     } 
 
    }//could have an else after this when one0's value is less than x[k] 
 
    } 
 
    console.log('done with function go()'); 
 
}
<input id="one0" type="text"> 
 
<input id="one1" type="text"> 
 
<input id="one2" type="text"> 
 
<input id="one3" type="text"> 
 
<input type="button" id="verifyBtn" value="verify" onclick="go()">