我遇到了这个javascript代码的问题。在我的网站中,我有一个div中的音频播放器(这个播放器是通过js定制的),并且工作得很好,这些是用于在页面中显示播放器的指令:
<div id="pers_player_footer">
<script src="../audiojs/audio.min.js"></script>
<script>
audiojs.events.ready(function() {
var as = audiojs.createAll();
});
</script>
<audio src='../songs/empty.mp3' id='player' preload='auto' autoplay='true'/>
</div>
我的播放器以空歌开头。当我想播放特定歌曲时,执行riproduci()函数并传递link参数以更改src音频标签。这是我的js函数:
function riproduci(link) {
document.getElementById("pers_player_footer").innerHTML = "<script
src='../audiojs/audio.min.js'></script>
<script>audiojs.events.ready(function() {var as = audiojs.createAll();});
</script><audio src='"+link+"' id='player' preload='auto'
autoplay='true'/>";
}
这就是结果:新代码写得正确,歌曲开始正常播放,在我的div中老玩家消失,但新播放器不会留下空白区域。这有什么问题?
答案 0 :(得分:0)
对脚本进行小的更改,如下所示:
<div id="pers_player_footer">
<script src="../audiojs/audio.min.js"></script>
<script>
audiojs.events.ready(function() {
var as = audiojs.createAll();
// yeah I know, globals suck
window.audio = as[0];
});
</script>
<audio src='../songs/empty.mp3' id='player' preload='auto' autoplay='true'/>
</div>
然后你可以将你的功能改为
function riproduci(link) {
audio.load(link);
audio.play();
}
是的,我知道全局变量很糟糕,但如果没有原始代码的更多上下文,这就更好了