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

标签 javascript html audio

我之前有一个问题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 不应该在这两个领域都工作吗?

最佳答案

  1. .bind() 函数返回另一个函数,该函数在调用时将使用传递给 .bind() 的第一个参数作为值这个。您的 pauseAllAudios() 函数不使用 this,因此传递 null 只是使 this。实际上,它可以是任何东西,但 null 是一个很好的可读标记,意味着“我的函数不需要 this 绑定(bind)到任何东西”。

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

关于javascript - 空并在 html 页面上放置外部 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504576/

相关文章:

python - 接受按钮按下后,无需再按Enter

javascript - CSS/Javascript 中的 IE 绘图方法

javascript - 如何在 three.js/WebGL 中更改 STL 对象的不透明度?

javascript - 在 Javascript 中访问表格单元格的内容

javascript - 根据容器高度/宽度更改字体大小

audio - 音量归一化时的动态范围压缩

javascript - 如何在 Iron Router 的 onBeforeAction 中等待 http 调用?

javascript - Provider 中的无效 Prop child

html - 在 col 标签上使用宽度属性或样式宽度?

java - 如何使用Java更改主音量?