Я пытаюсь создать панель поиска, которая позволит пользователю искать массив элементов. Я использую элемент span
в качестве фильтра, но по какой-то причине не могу получить содержимое элемента для назначения переменной.
Это довольно простая установка.
Я беру содержимое класса, обертывающего список, затем беру каждый элемент span. По соображениям здравого смысла я console.info
элементы span, чтобы убедиться, что они захвачены (а они есть).
Затем я пытаюсь получить текстовое содержимое внутри и назначить его переменной txtValue
, которую я затем проведу для проверки сравнения с фильтром.
В той части, где я присваиваю его текстовому значению, возникает ошибка, кажется, что он не захватывает внутренний текст. Может быть, я говорю об этом неправильно?
function search() {
var input, filter, e, content, txtValue;
input = document.getElementById("search");
filter = input.value.toUpperCase();
e = document.getElementById("search-list");
content = e.getElementsByTagName("span");
console.info(content);
for (i = 0; i < content.length; i++) {
if (content) {
txtValue = content.innerHTML;
console.info(textValue);
if (txtValue.toUpperCase().indexOf(filter) > -1) {
content[i].style.display = "";
} else {
content[i].style.display = "none";
}
}
}
}
<div class = "search-bar">
<input type = "text" id = "search" onkeyup = "search()"placeholder = "Search for numbers">
</div>
<div id = "search-list">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
</div>
Я проглядел это, спасибо!
txtValue
в консоли, которую вы используете textValue
function search() {
var input, filter, e, content, txtValue;
input = document.getElementById("search");
filter = input.value.toUpperCase();
e = document.getElementById("search-list");
content = e.getElementsByTagName("span");
for (i = 0; i < content.length; i++) {
if (content) {
txtValue = content[i].innerHTML;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
content[i].style.display = "";
} else {
content[i].style.display = "none";
}
}
}
}
<div class = "search-bar">
<input type = "text" id = "search" onkeyup = "search()"placeholder = "Search for numbers">
</div>
<div id = "search-list">
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
</div>
Возможно, вам нужно использовать:
txtValue = содержимое[i].innerHTML;
getElementsByTagName
возвращает элемент, подобный массиву. Ни одного элемента (обратите внимание на Elementс). Поэтому вам нужно перебрать их, прежде чем вы сможете это сделать.innerHTML