Окей, давай пошагово.
elem.indexOf is not a function
Что у тебя попадает в elem
?
elem - это один из элементов из массива elems
Мы этому элементу присваиваем метод indexOf
От того что элементу присвоили метод - он не превращаеться от этого в функцию.
Или я что то не правильно понимаю
Все правильно, но какой у него тип? Это строка, или число, или объект, или что?
Мы этому элементу присваиваем метод indexOf
- но ты же не присваиваешь его, а просто обращаешься к нему. Если бы ты его присваивала, это бы выглядело примерно как
elem.indexOf = function () {...}
в данном коде - попадают строки
ок, хорошо, … но почему интерпретатор в этом elem.indexOf - видит функцию?
Точно строки?
точно видит? Ты же писала, что
я не понимаю почему интерпретатор выдает эту ошибку. Это ж не функция. И он почему то “пытается увидеть” там функцию и обнаруживает что ее там нет.
то есть в скрипт надо передать именно строковое значение? То есть это
var searchString = inputField.value;
надо привести к строковому значению?
(Тут я не понимаю к сожалению вопрос)
Окей, elem
- один из elems
.
elems
- это массив DOM-элементов, который мы получаем из document.querySelector
(строка 4)
DOM-элемент не имеет метода indexOf
и если ты попытаешься его вызвать, то он выбросит ошибку (как раз то, что происходит)
Его имеет строка, то есть тот текст, который содержится в твоих p
, который тебе нужно сравнить с другим текстом, который ты вводишь в текстовое поле.
Строку из DOM-элемента можно достать с помощью свойства innerText
(строка 12).
Да, все правильно, сравнивать нужно именно строки. Но inputField.value
это уже строка, так что тут все ок.
спасибо…
то есть если надо делать что-то с DOM-элементом помимо метода поиска одновременно - то тут метод indexOf не подходит? А чем тогда его заменить?
⬆