2016-11-13 118 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,它应该是正确的 –