简体   繁体   English

使用JS循环播放一系列歌曲。 如果歌曲在阵列中,请警告“是”。 如果不是,请警告“否”

[英]Loop through an array of songs using JS. If song is in the array, alert “Yes”. If it's not, alert “No”

I'm trying to display a list of songs my band plays on a new website. 我正在尝试显示乐队在新网站上播放的歌曲列表。 The user enters a song name (in the input tag called "liveSearchBox") and clicks the "findSong" button. 用户输入歌曲名称(在名为“ liveSearchBox”的输入标签中),然后单击“ findSong”按钮。 If we play the song, I want to alert "Yes, we play it!". 如果我们播放歌曲,我想提醒“是的,我们播放!”。 If we don't, I want to alert "Sorry, we don't play it." 如果我们不这样做,我想提醒“对不起,我们不播放。” I've been trying for hours to figure out the solution, but am not advanced enough yet. 我已经尝试了好几个小时才能找出解决方案,但是还不够先进。 Thanks for any help! 谢谢你的帮助!

Here's my HTML code: 这是我的HTML代码:

<div class="live-search-list">

    <input type="text" id="liveSearchBox" placeholder=" Search Songs or Artist">
    <button id="findSong"> Click to Find!</button>
    <ul id="songList">
        <li class="song"> Margaritaville</li>
        <li class="song"> Boys of Summer</li>
        <li class="song"> Somebody Like You</li>
    </ul>

</div>

And here's my Javascript: 这是我的Javascript:

var songList = ["Margaritaville","Boys of Summer","Somebody Like You"];
var findButton = document.getElementById("findSong");
var songQuery = document.getElementById("liveSearchBox");
var songListItem = document.getElementsByClassName("song");

findButton.onclick = function(){
   for (var i = 0; i<songList.length; i++){
       if (songQuery.value === songList[i]){
           alert('Yes, we play "' +  songQuery.value + '"!');
       }  else {
             i++;
          }

  } 

};

Use indexOf : 使用indexOf

if (songList.indexOf(songQuery.value) != -1)
    alert('yes');
else
    alert('no');

Using indexOf would work, but if you want a solution that works in any browser, here is the fastest way to do that: 使用indexOf是可以的,但是如果您想要一个在任何浏览器中都可以使用的解决方案,这是最快的方法:

function isInArray(array, item) {
    for (i = 0; i < array.length; i++)
        if (array[i] === item)
            return true;
    return false;
}

findButton.onclick = function() {
    if (isInArray(songList, songQuery.value))
        alert('Yes, we play "' + songQuery.value + '"!');
    else
        alert('Sorry, we don\'t play "' + songQuery.value + '".');
};
findButton.onclick = function(){
    var msg = !!~songList.indexOf(songQuery.value) ? 'Yes, we play "' +  songQuery.value + '"!' : 'No we do not play this song.';
    alert(msg);
}

Maybe this will be more understandable for you: 也许这对您来说更容易理解:

findButton.onclick = function(){
    var msg = songList.includes(songQuery.value) ? 'Yes, we play "' +  songQuery.value + '"!' : 'No we do not play this song.';
    alert(msg);
}

Or this: 或这个:

findButton.onclick = function(){
    if(songList.includes(songQuery.value)) {
        alert('Yes, we play "' +  songQuery.value + '"!');
    } else {
        alert('No we do not play this song.');
    }
}

 var songList = ["Margaritaville", "Boys of Summer", "Somebody Like You"], findButton = document.getElementById("findSong"), songQuery = document.getElementById("liveSearchBox"); findButton.onclick = function() { if (typeof songQuery.value === 'undefined' || songQuery.value === null || songQuery.value === '') { alert('please input the song name.'); return false; } if (songList.indexOf(songQuery.value) > -1) { alert('Yes, we play "' + songQuery.value + '"!'); } else { alert('Sorry "' + songQuery.value + '" was not found!'); } }; 
 <div class="live-search-list"> <input type="text" id="liveSearchBox" placeholder=" Search Songs or Artist"> <button id="findSong">Click to Find!</button> <ul id="songList"> <li class="song">Margaritaville</li> <li class="song">Boys of Summer</li> <li class="song">Somebody Like You</li> </ul> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM