Вход

Просмотр полной версии : Живой поиск, с помощью регулярных выражений


Сложный человек
16.11.2016, 17:08
Почему не выводит ячейку из массива, если введённое значение совпадает?

http://plnkr.co/edit/bOMB2VuVEY64WgXZsjj3?p=preview

Dilettante_Pro
16.11.2016, 17:57
Сложный человек,
При успехе метод search() возвращает индекс первого сопоставления с регулярным выражением внутри строки. В противном случае метод вернёт -1.
Так что не надо сравнивать его с input.value

Coriolan161
16.11.2016, 18:02
Сложный человек,
1) Он не понимает кто такой input в
input.addEventListener('...')
2) Не создавай элементы в цикле!!!
3) На

Dilettante_Pro
16.11.2016, 18:19
Coriolan161,
1) Он не понимает кто такой input в
Цитата:
input.addEventListener('...')

Понимает...
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type='text' id='input'><br>
<div id="con"></div><br>
<div id="result"></div>

<script >
var arr = [
'Advance',
'Belfair',
'Belleview',
'Boonville',
'Conestoga',
'Cotopaxi'

]
for (var i = 0; i < arr.length; i++) {
var div = document.createElement('div');

con.innerText += (arr[i]);
con.appendChild(div)
}

input.addEventListener('input', function () {
for (var i = 0; i < arr.length; i++) {

var res = input.value;

console.log(input.value + ' == ' + res)
if (arr[i].search(res) > -1) {
console.log(arr[i]);
result.innerText = arr[i]
}
}
if (input.value.length == 0) {
result.innerText = ''
}
});
</script>
</body>
</html>

Coriolan161
16.11.2016, 18:28
Dilettante_Pro,
В смысле?) Как это?) Как он понимает что это тот инпут?

Dilettante_Pro
16.11.2016, 18:32
Coriolan161,
У него id='input'

При отображении страницы браузер автоматически создаёт глобальные свойства со ссылками на элементы, для которых указан уникальный идентификатор. Именами свойств являются сами идентификаторы. Таким образом, в JavaScript есть возможность быстрого обращения к элементу по его id.
http://web-gain.ru/javascript/dom-reference

Coriolan161
16.11.2016, 18:44
Dilettante_Pro,
Это перевернуло всю мою жизнь)

Dilettante_Pro
16.11.2016, 18:58
Coriolan161,
Надеюсь, не вверх ногами:)

DivMan
16.11.2016, 22:54
А теперь, почему, если стереть поле, то элемент не создаётся?

http://plnkr.co/edit/RnUjCqPT8aBMpUcDcmYu?p=preview

Dilettante_Pro
17.11.2016, 17:03
DivMan,
Не нужно в цикле много раз удалять один-единственный con - скрипт прерывается по ошибке
Если и удалять в цикле - то с использованием try-catch