我正在为我网站上的图片添加addEventListener
。
目标是每次用户点击此图片(album-cover-art
)时,系统都会调用一个函数(function (event)
),将在3个函数之间切换
document.getElementsByClassName("album-cover-art")[0].addEventListener("click", function (event){
});
这些是我想要切换的3个功能:
setCurrentAlbum(albumPicasso);
setCurrentAlbum(albumMarconi);
setCurrentAlbum(albumGreenDay);
如何在eventListener中包含这3个函数调用,当单击图片时它会在它们之间切换?
document.getElementsByClassName("album-cover-art")[0].addEventListener("click", function (event){
//toggle between the 3 functions below:
setCurrentAlbum(albumPicasso);
setCurrentAlbum(albumMarconi);
setCurrentAlbum(albumGreenDay);
});
注意:
答案 0 :(得分:1)
你可以创建一个包含所有选择的数组,然后使用索引,选择choise并在每次单击时递增最后一次,如果index等于数组长度则返回第一个索引(0),
var index= 1;
var albums = [albumPicasso,albumMarconi,albumGreenDay];
document.getElementsByClassName("album-cover-art")[0].addEventListener("click", function(event) {
if(index == albums.length) index = 0;
setCurrentAlbum(albums[index]);
index++;
});
请参阅beelow代码作为解释示例:
var albumPicasso = "https://dummyimage.com/300x300/500/f0f",
albumMarconi = "https://dummyimage.com/300x300/550/ff0",
albumGreenDay = "https://dummyimage.com/300x300/555/0ff";
var index= 0;
var albums = [albumPicasso,albumMarconi,albumGreenDay];
document.getElementsByClassName("album-cover-art")[0].addEventListener("click", function(event) {
if(index == albums.length) index = 0;
setCurrentAlbum(albums[index]);
index++;
});
function setCurrentAlbum(album){
document.getElementsByClassName("album-cover-art")[0].style.backgroundImage = "url('"+album+"')";
}

.album-cover-art {
background-image : url('https://dummyimage.com/300x300/500/0ff');
width:300px;
height:300px;
}

<div class="album-cover-art">
</div>
&#13;
答案 1 :(得分:0)
对于所有的downvoters:仅仅因为你不喜欢这种模式,这并不意味着解决方案是错误的。输入你自己的,更好的答案,让提问者选择他喜欢的那个。此外,如果您为了学习目的而向我和提问者提供原因(作为评论)。感谢。
以下是您可能感兴趣的代码段:
albumClickCounter = 0;
document.getElementsByClassName("album-cover-art")[0].addEventListener("click", function (event){
if(window.albumClickCounter % 3 === 0) setCurrentAlbum(albumPicasso);
if(window.albumClickCounter % 3 === 1) setCurrentAlbum(albumMarconi);
if(window.albumClickCounter % 3 === 2) setCurrentAlbum(albumGreenDay);
window.albumClickCounter++;
});
var setCurrentAlbum = function(album) { alert(album); }
var albumPicasso = 1;
var albumMarconi = 2;
var albumGreenDay = 3;
.album-cover-art {
width: 200px;
height: 200px;
background: green;
}
<div class="album-cover-art"></div>
出于演示目的,专辑是数字,但逻辑可以是任何你喜欢的。根据您的需求进行调整。
答案 2 :(得分:0)
使用如下
var previouParam="";
document.getElementsByClassName("album-cover-art")
[0].addEventListener("click", function (event){
if(previouParam==""){
setCurrentAlbum("albumPicasso");
}else if(previouParam=="albumPicasso"){
setCurrentAlbum("albumMarconi");
}else{
previouParam="";
setCurrentAlbum("albumGreenDay");
}
});