当我在用户输入中输入与流派 obj 不匹配的随机字符串时,会出现警报。但是,当我输入与警报(无效类型)匹配的有效输入时,仍然会弹出。并且不执行 if 语句。
示例: 用户输入:恐怖是一个有效的输入,应该返回所有电影列表,但仍然出现警报说它不是有效的类型。
else语句出现if语句是否等于genre[i].name
$('#submitButton').click(function(){
reset();
// getting genre from user
let genreSubmission = $('#inputSearch').val().toLowerCase();
let genreId = 0;
// api genre ids objects to change the api link
const genre = [
{
"id": 28,
"name": "Action"
},
{
"id": 12,
"name": "Adventure"
},
{
"id": 16,
"name": "Animation"
},
{
"id": 35,
"name": "Comedy"
},
{
"id": 80,
"name": "Crime"
},
{
"id": 99,
"name": "Documentary"
},
{
"id": 18,
"name": "Drama"
},
{
"id": 10751,
"name": "Family"
},
{
"id": 14,
"name": "Fantasy"
},
{
"id": 36,
"name": "History"
},
{
"id": 27,
"name": "Horror"
},
{
"id": 10402,
"name": "Music"
},
{
"id": 9648,
"name": "Mystery"
},
{
"id": 10749,
"name": "Romance"
},
{
"id": 878,
"name": "Science Fiction"
},
{
"id": 10770,
"name": "TV Movie"
},
{
"id": 53,
"name": "Thriller"
},
{
"id": 10752,
"name": "War"
},
{
"id": 37,
"name": "Western"
}];
for (let index = 0; index < genre.length; index++) {
if(genreSubmission === genre[index].name.toLowerCase()){
genreId = genre[index].id;
console.log(genreId);
} else{
return alert("not a valid genre");
}
};
最佳答案
假设您输入Adventure。
- 您进入循环,
index
为0
genre[0].name
是 Action ,而不是冒险- 所以你
返回alert("not a valid generic");
- 提醒
- 退出函数(因为
return
就是这样做的)
自从您退出循环后,index
就永远不会增加到 1
,并且您永远找不到匹配项。
您需要搜索整个数组,如果没有找到匹配项,则放弃并发出警报并返回。
虽然您可以使用for
循环来做到这一点,arrays have a built-in method for doing this :
const match = genre.find(
element => element.name.toLowerCase() === genreSubmission
);
if (match) {
console.log(match.id);
} else {
return alert("not a valid genre");
}
关于javascript - Alert() 在 else 语句中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59678985/