在html页面上空置和放置外部javascript

时间:2015-07-19 18:35:46

标签: javascript html5 audio

我之前有一个问题2 audio sounds and I want to play one HTML5 audio element at a time,已经回答了。但是,我还有两个问题:

1)需要帮助解释它:.bind中的null(null,audios [i [)是什么意思?我研究过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有效。不应该在这两个方面都有效吗?

2 个答案:

答案 0 :(得分:0)

  1. .bind()函数返回另一个函数,该函数在调用时将使用传递给.bind()的第一个参数作为this的值。您的pauseAllAudios()功能未使用this,因此传递null只会使this成为null。真的,它可能是任何东西,但null是一个很好的可读标记,意思是“我的函数不需要this绑定任何东西”。

  2. 代码在身体末端起作用,因为浏览器在遇到代码时运行代码,在构建DOM 时运行代码。当脚本位于head部分时,包含音频元素的DOM部分尚不存在。当它在身体的末端时,DOM(几乎)完成。

答案 1 :(得分:0)

对于第二个问题,也许 js / audio.js 需要另一个javascript文件,然后当你把它放在头部时它就在所需的文件之前,所以它不能正常工作,当你把它放在</body>之前它在所需的js文件后加载然后工作