我正在尝试创建一个按钮,以更改在后台播放的歌曲。我将歌曲0、1、2、3.ogg命名为我的主目录。但它在1次后不起作用。因此,当播放0.ogg并单击时,它会更改。但是在我再次单击之后,var保持在1,并且歌曲没有改变
我尝试了++ var和var ++以及其他一些小事情
function SongChange(){
var prefix = 0;
var song = prefix + ".ogg";
++prefix;
document.getElementById("audio").pause();
document.getElementById("audio").setAttribute('src', song);
document.getElementById("audio").load();
document.getElementById("audio").play();
console.log(prefix);
}
答案 0 :(得分:2)
每次调用该函数时,++prefix
会递增prefix
……但是运行该函数时发生的 first 首先是var prefix = 0;
将其设置为0
!
将var prefix = 0;
移动到函数外部,因此不会在每次调用函数时将变量设置为0
。
答案 1 :(得分:0)
运行SongChange
时,首先要做的是将prefix设置为0。如果前缀是7,并且您运行了此方法,则它将:
在运行函数之前,无论前缀的值是多少,您都将始终播放歌曲0
相反,您需要在功能的外部外部存在前缀:
var prefix = 0;
function SongChange() {
++prefix;
var song = prefix + ".ogg";
document.getElementById("audio").pause();
document.getElementById("audio").setAttribute('src', song);
document.getElementById("audio").load();
document.getElementById("audio").play();
}
同样,您应该检查prefix
不会太大:
var prefix = 0;
function SongChange() {
++prefix;
if (prefix > 3)
prefix = 0;
var song = prefix + ".ogg";
document.getElementById("audio").pause();
document.getElementById("audio").setAttribute('src', song);
document.getElementById("audio").load();
document.getElementById("audio").play();
}
有很多方法可以使prefix
持久化,但是使其持久化是您的主要问题。您可以:
function SongChange() {
SongChange.prefix++;
var song = SongChange.prefix + ".ogg";
// ...
}
SongChange.prefix = 0;
function SongChange() {
window.prefix++;
var song = window.prefix + ".ogg";
// ...
}
window.prefix = 0;
<audio>
标记中提取前一个前缀:function SongChange() {
var prefix = Number(document.getElementById("audio").src.split(".")[0]) || 0;
prefix++;
var song = prefix + ".ogg";
// ...
}
function SongChange() {
var prefix = Number(localStorage.getItem("prefix")) || 0;
prefix++;
var song = prefix + ".ogg";
localStorage.setItem("prefix", prefix);
// ...
}
还有其他选择,但是我敢肯定,您可以发挥创意并弄清楚它们。