【发布时间】:2018-04-09 12:35:01
【问题描述】:
我希望确保当输入字段为空时,不会返回任何结果。现在,如果您输入一个名称,然后删除所有文本,您将在数组中获得所有结果。
const characters = [{
first_name: "Abraham",
last_name: "Lincoln",
img: "https://upload.wikimedia.org/wikipedia/commons/a/ab/Abraham_Lincoln_O-77_matte_collodion_print.jpg"
},
{
first_name: "Johnny",
last_name: "Bravo",
img: "https://ia.media-imdb.com/images/M/MV5BYTg4MDkwODgtYTBlNy00Yjc2LTg4NTYtZGE5YmFhYjY5NzU2XkEyXkFqcGdeQXVyNTM3MDMyMDQ@._V1_.jpg"
},
{
first_name: "Barney",
last_name: "Rubble",
img: "https://upload.wikimedia.org/wikipedia/en/e/e2/Barney_Rubble.png"
}
];
let searchInput = document.getElementById('searchInput');
searchInput.addEventListener('keyup', filterNames);
function filterNames() {
let filterValue = document.getElementById('searchInput').value.toUpperCase();
let output = '';
for (let i = 0; i < characters.length; i++) {
let firstName = characters[i].first_name.toUpperCase();
if (firstName.indexOf(filterValue) > -1) {
output +=
'<div class="card">' +
'<div class="img-container text-center">' +
'<img src="' + characters[i].img + '" width=180 height=180 />' +
'</div>' +
'<div class="text-center">' +
'<h5>' + characters[i].first_name + ' ' + characters[i].last_name + '</h5>' +
'</div>' +
'</div>';
}
}
document.getElementById('characters').innerHTML = output
};
.card {
display: inline-block;
margin-right: 12px;
float: left;
}
<div>
<input type="text" id="searchInput" placeholder="Who are you looking for?" />
</div>
<div id="characters"></div>
感谢任何帮助。
【问题讨论】:
-
提供您的 HTML
-
只需一步一步地检查您的代码。您的代码的哪一部分与输出(循环)有关?它什么时候会输出任何东西,必须满足什么条件(
searchInput必须是first_name的一部分)?当您有一个空字符串作为“搜索输入”时检查该条件的各个部分("foo".indexOf("")的输出是什么?)。
标签: javascript arrays search