2016-11-13 3 views
0

Я делаю программу, которая имеет массив чисел, а затем пользователь вводит некоторые значения и проверяет. значение, которое он вводит, должно быть в порядке с массивом чисел, и если это не то, что пользователь получает предупреждение, извините.Кнопка вообще не работает

Значение в первой строке ввода определяет, из какого числа массива должно начинаться сравнение. Например, если массив содержит числа, такие как {2,4,6,8,10}, и пользователь вводит 6 в первую строку ввода, а затем он вводит 8 и 10 в следующих двух барах, он должен получить результат «678 « Если он не получит первое число справа, скажет, что он входит в 3, а так как 3 не находится в массиве, то не имеет значения, что он входит в другие входные бары, он получит результат« Извините ».

Аналогичным образом, если пользователь вводит 4 в первой строке ввода, а затем во второй строке он набирает 8, он должен получить результат «Извините», так как порядок массива равен {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

Вы никогда не можете использовать document.write после загрузки страницы. И вам нужно дождаться загрузки для доступа к полям на странице – mplungjan

+0

, для чего предназначено for (var x = 0; x <4; x ++) { document.getElementById ("one" + x); } ?? –

+0

Я действительно сдался, пытаясь исправить это. 'document.getElementById (« один »+ x);' не является полным и не нужен там, где он есть. Используйте имена переменных. 'i' почти универсально используется в цикле for, но вы имеете t и k и не постоянно обновляете их. Вы рискуете запустить бесконечный цикл при обновлении k в более чем одном месте, а также var тоже – mplungjan

ответ

0

Version 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>

Version 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

Привет, ур. Третья версия почти добирается туда. THANK U SO MUCH. Единственное, когда пользователь вводит цифры в неправильном или неправильном порядке, а затем нажимает кнопку подтверждения, результат должен просто огорчить его неправильное, а не показывать цифры. Поэтому результат должен быть правильным или неправильным. Но, спасибо, вы так много думаете, что понимаете мое плохое объяснение и помогаете !! Я очень ценю это! –

+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

Returns: К сожалению

Тест 4 (проверка массива 2, 4, 10, 12)

enter image description here

Возвращает: Corrent

Тест 5 (проверить массив 2, 4, 10, 12)

enter image description here

Возвращает: К сожалению

Тест 6 (проверка массива 2, 4, 10, 12)

enter image description here

Returns: К сожалению

+0

Это работает лучше, но дело в том, что массив {2,4,6,8}, так что даже если пользователь вводит 4 в первом баре, а затем входит в 6, 8 в следующем и щелчки проверяют, он должен сказать правильно. –

+0

@ BuffyAnne-summers Вы имеете в виду, если вход frist равен «4», а второй - «68», это должно быть правильно? Или вы имеете в виду, что он может вводить номер с запятой в одном входе, например, первый вход «4» и второй вход «6,8»? –

+0

Я имел в виду, если первый вход 4, а второй - 6, а третий - 8, он должен быть правильным –

Смежные вопросы