Перебор элементов массива и сравнение со значением
Доброго времени суток, есть небольшая функция которая должна искать совпадение с введенным значением в input и элементами массива, если совпадение есть должна появиться надпись true, если нет false.
Но true выводится только если в input введено (пять) - то-есть последнее значение массива, если же ввести (два) или (три) выводит false. Вопрос, почему так происходит, если значение (три) есть в массиве, и как сделать чтобы функция работала корректно?
function myFunc(){
let arr = ['один', 'два', 'три', 'четыре', 'пять'];
let input = document.getElementById('input').value; //получаем значение введенное в input
let out = document.getElementById('out');
for(let i = 0; i < arr.length; i++){
if(arr[i] == input){
out.innerHTML = 'true';
}
else{
out.innerHTML = 'false';
}
}
}
document.getElementById('enter').onclick = myFunc;
<input type="text" id="input"> <button id="enter">Click</button> <p id="out"></p> |
TheSanches,
одно из множества решений, в цикле вам нужно получить значение, а после цикла его установить |
После того как вы нашли совпадение, нужно останавливать цикл.
Вы можете отказаться от перебора массива и воспользоваться методом "indexOf":
document.getElementById('enter').onclick=function(){
document.getElementById('out').innerHTMl=
['один', 'два', 'три', 'четыре', 'пять'].indexOf(
document.getElementById('input').value.toLowerCase()
)>-1;
};
https://developer.mozilla.org/ru/doc.../Array/indexOf |
Спасибо
|
TheSanches,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
"use strict"
window.addEventListener('DOMContentLoaded', function() {
function myFunc(){
let arr = ['один', 'два', 'три', 'четыре', 'пять'];
let input = document.getElementById('input').value; //получаем значение введенное в input
let out = document.getElementById('out');
let assessment = false;
for(let i = 0; i < arr.length; i++){
if(arr[i] == input){
assessment = true; break;
}
}
out.innerHTML = assessment
}
document.getElementById('enter').addEventListener('click', myFunc);
});
</script>
</head>
<body>
<input type="text" id="input" value="три">
<button id="enter">Click</button>
<p id="out"></p>
</body>
</html>
|
Можно и не останавливать - полная проверка. В массиве могут быть повторы
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
"use strict"
window.addEventListener('DOMContentLoaded', function() {
function myFunc(){
let arr = ['один', 'два', 'три', 'четыре', 'пять'];
let input = document.getElementById('input').value; //получаем значение введенное в input
let out = document.getElementById('out');
let assessment = '';
for(let i = 0; i < arr.length; i++){
assessment += arr[i] + ':' + (arr[i] == input) + '<br>';
}
out.innerHTML = assessment
}
document.getElementById('enter').addEventListener('click', myFunc);
});
</script>
</head>
<body>
<input type="text" id="input" value="три">
<button id="enter">Click</button>
<p id="out"></p>
</body>
</html>
|
рони,
for(let i = 0; i < arr.length; i++){
if(arr[i] == input){
assessment = true; break;
}
}
вместо этого куска так и напрашивается .some() |
Цитата:
|
| Часовой пояс GMT +3, время: 06:44. |