我的網站看起來像這樣創造的歌曲的播放列表: 媒體播放/暫停切換,而不使用太多的if語句?
不過,我很努力找出實現所有可能的case語句的正確方法,雖然切換,用戶可以經歷該按鈕,如:
- 切換和關閉
- 切換上一個播放按鈕,然後點擊另一個播放按鈕,使以前有關閉同時
- 等一個播放按鈕。
現在,我的代碼(下圖)適用於每種情況,除非用戶切換播放按鈕的開啓和關閉,然後單擊不同的播放按鈕。此特定情況會導致兩個圖標切換到暫停按鈕,而不是最近單擊。我知道爲什麼會發生這種情況,這是因爲在舊的播放按鈕上留下了lastPlayed
的ID,因此觸發了切換if
陳述。
我的問題是,是否有更簡單的方法來設置播放按鈕切換,涵蓋所有這些情況,而不必爲每種可能的結果制定具體的if
聲明?
要麼尋找更好的解決方案,要麼修復我的一個bug,但總是首選更清晰的代碼,謝謝任何幫助!
var playCounter = 0;
function clickSongPlay(artist, title, url, imageURL, element) {
//debugger;
player.playlist.push(
{
title: title,
artist: artist,
file: url,
imageURL: imageURL,
howl: null
}
);
//check to see if we need to resume the song
if ($(element).hasClass("resumeSong") && $(".music-control").hasClass("ion-ios-play")) {
console.log("resuming");
/////////LINE BELOW RESUMES THE TRACK FROM CURRENT POSITION////////
player.play();
$(element).toggleClass("ion-ios-play ion-ios-pause");
$(".resumeSong").removeClass("resumeSong");
return;
}
//if a song is playing and the pause button is clicked, pause the track
if ($(element).hasClass("ion-ios-pause")) {
console.log("pausing");
player.pause();
$(element).toggleClass("ion-ios-pause ion-ios-play");
$(element).addClass("resumeSong");
return;
}
//start playing a new song
if ($(element).hasClass("ion-ios-play") && !$(element).hasClass("resumeSong")) {
if ($("#lastPlayed") && !playCounter == 0) {
console.log("here is a new song");
$("#lastPlayed").toggleClass("ion-ios-pause ion-ios-play")
$(".music-control").removeAttr("id", "lastPlayed");
}
console.log("new song");
///////LINE BELOW LOADS THE NEW SONG//////////////
player.skipTo(player.playlist.length - 1);
$(element).toggleClass("ion-ios-play ion-ios-pause");
$(element).attr("id", "lastPlayed");
playCounter += 1;
return;
}
}
這裏是一個特定歌曲的div的HTML:
<div><i class="icon ion-ios-play music-control" onclick="clickSongPlay('@song.Artist','@song.Title','@song.URL','@song.Album.ImageURL', this);"></i></div>
如何播放按鈕被指定爲這樣?即是'.music-control'一個CSS類,應用於所有播放按鈕? –
@BozhidarStoinev查看我添加的HTML行嗎?每首歌曲項目(顯示在頂部圖片中)都有這些類別。當點擊一個播放按鈕時,'ion-ios-play'類被切換到'ion-ios-pause',這些是來自Ionicons庫的css類。 '.music-control'在每首歌的每個班上。這有幫助嗎? –