【发布时间】:2021-08-27 11:45:03
【问题描述】:
我正在用 javascript 制作一个名称搜索应用程序。我已经在 javascript 中动态创建了所有列表项。
当我使用 charAt(0) 时,应用程序无法运行,没有任何显示 我想匹配输入的第一个字符和数组的第一个字符
names = ["Ayesha", "Alina", "Bilal", "Kaira", "Per", "Henry", "Liba", "Rimsha"]
let ulEl = document.getElementById("ul-el")
let searchInput = document.getElementById("searchInput");
function render(things) {
let listItems = ""
for (let i = 0; i < things.length; i++) {
listItems += `
<li class="names">
${things[i]}
</li>
`
}
ulEl.innerHTML = listItems
}
render(names)
searchInput.addEventListener("keyup", function(event) {
let searchQuery = event.target.value.toLowerCase().charAt(0);
let allNamesDOMCollection = document.getElementsByClassName('names');
console.log(allNamesDOMCollection.textContent)
console.log(allNamesDOMCollection.textContent)
for (let i = 0; i < allNamesDOMCollection.length; i++) {
let currentName = allNamesDOMCollection[i].textContent.toLowerCase().charAt(0);
if (currentName.includes(searchQuery)) {
allNamesDOMCollection[i].style.display = "block";
} else {
allNamesDOMCollection[i].style.display = "none";
}
}
})
<h1>Search Names</h1>
<div class="container">
<input type="text" id="searchInput" placeholder="Search">
</div>
<div class="container cont-modifier">
<ul id="ul-el"></ul>
</div>
【问题讨论】:
-
嗨!请使用现场 Stack Snippets 功能而不是非现场资源。 Here's how to do one.
-
getElementsByClassName返回一个数组,你需要循环遍历它的值,console.log(allNamesDOMCollection[0].textContent)例如工作 -
@AlexandreElshobokshy - 它返回一个
HTMLCollection,而不是一个数组。在他们的实际代码中,他们正在循环,只是他们没有console.log。 -
是的,我的意思是它不是一个固定的定义值。他在问为什么它返回未定义,我只是解释了:)
-
为什么你只得到列表中每个名字的第一个字符?您的搜索字段允许多个...
标签: javascript html charat