我之前有一个问题2 audio sounds and I want to play one HTML5 audio element at a time ,得到了回答。不过,我还有两个问题:
1) 需要帮助解释它:.bind(null,audios[i[) 中的 null 是什么意思?我研究了 null 但仍然很困惑。
外部JS:
var audios = document.getElementsByTagName('audio');
for(var i=0; i<audios.length;i++) {
audios[i].onplay = pauseAllAudios.bind(null, audios[i]);
}
function pauseAllAudios(audio){
for(var i=0; i<audios.length;i++)
if(audios[i]!=audio) {
} audios[i].pause();
}
};
2)当我把它放入 HTML 页面:
<script type="text/javascript" src="js/audio.js"></script>
之前</head>
部分,javascript 不起作用。如果我把它放在</body>
之前部分,
JavaScript 可以工作。 javascript 不应该在这两个领域都工作吗?
最佳答案
.bind()
函数返回另一个函数,该函数在调用时将使用传递给.bind()
的第一个参数作为值这个
。您的pauseAllAudios()
函数不使用this
,因此传递null
只是使this
为空
。实际上,它可以是任何东西,但null
是一个很好的可读标记,意味着“我的函数不需要this
绑定(bind)到任何东西”。当代码位于主体末尾时,它会起作用,因为浏览器会在构建 DOM 时遇到代码时运行代码。当脚本位于 head 部分时,包含音频元素的 DOM 部分尚不存在。当它位于正文末尾时,DOM(几乎)已完成。
关于javascript - 空并在 html 页面上放置外部 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504576/