Скрипт поиска по странице из поисковой строки

Окей, давай пошагово.
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 не подходит? А чем тогда его заменить?