当前位置: 代码迷 >> JavaScript >> 空并将外部javascript放置在html页面上
  详细解决方案

空并将外部javascript放置在html页面上

热度:56   发布时间:2023-06-13 12:35:35.0

我之前有一个问题 ,得到了回答。 但是,我还有2个问题:

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在这两个领域都不应该工作吗?

  1. .bind()函数为您提供了另一个函数,该函数在被调用时将使用传递给.bind()的第一个参数作为this的值。 pauseAllAudios()函数不使用this ,所以通过null只是让this成为null 确实可以是任何东西,但null是一个很好的可读标记,表示“我的函数不需要this绑定到任何东西”。

  2. 该代码在正文末尾有效,因为浏览器在构建DOM时会遇到代码时运行它们。 当脚本位于头部分中时,包含您的音频元素的DOM部分尚不存在。 当它位于正文的末尾时,DOM(几乎)是完整的。

对于第二个问题,也许js / audio.js需要另一个javascript文件,然后将其放在头部时,它位于所需文件的前面,因此它不起作用,并且当您将它放在</body>在所需的js文件之后加载,然后可以正常工作

  相关解决方案