2016-11-13 121 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/

<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

你不能頁面加載後使用文件撰寫。您需要等待加載才能訪問頁面上的字段 – mplungjan

+0

for的用途是什麼(var x = 0; x <4; x ++)document.getElementById(「one」+ x); } ?? –

+0

我真的放棄了試圖解決這個問題。 'document.getElementById(「one」+ x);'不完整,不需要的地方。請使用更好的變量名稱。 'i'幾乎在for循環中被普遍使用,但是你有t和k並且不一致地更新它們。當你在多個地方更新k時,你會冒險運行一個永久循環,並且var也會被掛起 – mplungjan

回答

0

版本1 - 所有4個必須是正確爲了

var x = [],num=2; 
 
// I assume you will want to change this to random later 
 
for (var i = 0; i < 4; i++) { 
 
    x[i] = num * (i + 1); 
 
} 
 
console.log(x); 
 

 
function go() { 
 
    var found=0; 
 
    for (var i = 0; i < 4; i++) { 
 
    if (document.getElementById("one" + i).value == x[i]) { 
 
     found++; 
 
    } 
 
    } 
 
    document.getElementById("result").innerHTML = found==x.length?x:"Sorry"; 
 
}
<input id="one0" type="text" value="" /> 
 
<input id="one1" type="text" value="" /> 
 
<input id="one2" type="text" value="" /> 
 
<input id="one3" type="text" value="" /> 
 
<input type="button" id="verifyBtn" value="verify" onclick="go()" /> 
 
<span id="result"></span>

第2版的錯誤,如果沒有輸入任何信息是錯

var x = [], 
 
    num = 2; 
 
// I assume you will want to change this to random later 
 
for (var i = 0; i < 4; i++) { 
 
    x[i] = ""+num * (i + 1); // make string 
 
} 
 
console.log(x); 
 
window.onload = function() { 
 
    var field = document.querySelectorAll(".entry"); 
 
    for (var i = 0; i < field.length; i++) { 
 
    field[i].onkeyup = function() { 
 
     document.getElementById("result").innerHTML = (x.indexOf(this.value) == -1)?"Sorry":this.value; 
 
    } 
 
    } 
 
} 
 

 
function go() { 
 
    var field = document.querySelectorAll(".entry"), 
 
    error = false, 
 
    res = ""; 
 
    for (var i = 0; i < field.length; i++) { 
 
    res += field[i].value; // string concatenation 
 
    } 
 
    document.getElementById("result").innerHTML = (res == x.join("")) ? res : "Sorry"; 
 
}
<input class="entry" id="one0" type="text" value="" /> 
 
<input class="entry" id="one1" type="text" value="" /> 
 
<input class="entry" id="one2" type="text" value="" /> 
 
<input class="entry" id="one3" type="text" value="" /> 
 
<input type="button" id="verifyBtn" value="verify" onclick="go()" /><br/> 
 
<span id="result">test</span>

版本3 - 任何1,2,3或4條目如果它們是陣列的子部分則被認爲是正確的,例如,46是確定的,所以是68而不是26

var x = [], 
 
    num = 2; 
 
// I assume you will want to change this to random later 
 
for (var i = 0; i < 4; i++) { 
 
    x[i] = ""+num * (i + 1); // make string 
 
} 
 
console.log(x); 
 
window.onload = function() { 
 
    var field = document.querySelectorAll(".entry"); 
 
    for (var i = 0; i < field.length; i++) { 
 
    field[i].onkeyup = function() { 
 
     document.getElementById("result").innerHTML = (x.indexOf(this.value) == -1)?"Sorry":this.value; 
 
    } 
 
    } 
 
} 
 

 
function go() { 
 
    var field = document.querySelectorAll(".entry"), 
 
    error = false, 
 
    res = []; 
 
    for (var i = 0; i < field.length; i++) { 
 
    if (x.indexOf(field[i].value) !=-1) res.push(field[i].value); 
 
    } 
 
    document.getElementById("result").innerHTML = (x.join(".").indexOf(res.join("."))!=-1) ? res : "Sorry"; 
 
}
<input class="entry" id="one0" type="text" value="" /> 
 
<input class="entry" id="one1" type="text" value="" /> 
 
<input class="entry" id="one2" type="text" value="" /> 
 
<input class="entry" id="one3" type="text" value="" /> 
 
<input type="button" id="verifyBtn" value="verify" onclick="go()" /><br/> 
 
<span id="result">test</span>

+0

嗨,你的第三個版本幾乎到了那裏謝謝你這麼多。唯一的問題是,當用戶鍵入數字錯誤或不按順序,然後點擊驗證按鈕時,結果應該說對不起,而不是顯示數字。所以結果必須是對或錯。但是,非常感謝你的理解我的可憐的解釋和幫助!對此,我真的非常感激! –

+0

我會在12小時左右再訪問這個 – mplungjan

0

如果我明白你的問題以及這應該工作:

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

    <script type="text/javascript"> 
     function go() { 
      var arrinputs = []; 
      var arr = [2, 4, 10, 12]; 

      for (var x = 0; x < 4; x++) { 
       var tmp = parseInt(document.getElementById("one" + x).value) 
       if (!isNaN(tmp)) 
        arrinputs.push(tmp); 
      } 
      var a = "-" + arrinputs.join('-') + "-"; 
      var b = "-" + arr.join('-') + "-"; 

      if (b.indexOf(a) != -1) { 
       alert("Ok!"); 
      } else { 
       alert("Sorry!"); 
      } 
     } 
    </script> 

</body> 
</html> 

測試1(檢查數組2,4,6 ,8)

enter image description here

返回:Corrent

試驗2(校驗陣列2,4,6,8)

enter image description here

返回:Corrent

試驗3(檢查陣列2,4,6,8)

enter image description here

返回:對不起

試驗4(校驗陣列2,4,10,12)

enter image description here

返回:Corrent

試驗5(檢查陣列2,4,10,12)

enter image description here

返回:對不起

試驗6(校驗陣列2,4,10,12)

​​

返回:對不起

+0

它更好地工作,但是事實是,數組是{2,4,6,8},所以即使用戶在第一個欄中輸入4,然後輸入6, 8在下一個點擊驗證,它應該說是正確的.. –

+0

@ BuffyAnne夏天你的意思是,如果第一個輸入是'4',第二個輸入是'68',它應該是正確的?或者你的意思是它可以在一個輸入中輸入逗號分隔數字,例如第一個輸入'4'和第二個輸入'6,8'? –

+0

是的,我的意思是如果第一個輸入是4,第二個是6,第三個是8,它應該是正確的 –