【发布时间】:2015-06-10 13:50:06
【问题描述】:
嘿,我有以下在 JQuery 中运行良好的函数,但由于许多原因,我需要在纯 JS 中使用它。
$('audio').on("play pause ended", function () {
document.title = document.title.replace("\u25B6", "")
$("audio").each(function (index) {
if (!this.paused) {
document.title = "\u25B6 " + document.title.replace("\u25B6 ", "")
return false;
}
})
});
我尝试将其转换为纯 JS(见下文),但它只是出现以下错误:TypeError: undefined is not a function (evalating 'sound.addEventListener')
var sound = document.getElementsByTagName('audio');
sound.addEventListener('play pause ended', function () {
document.title = document.title.replace('\u25B6', '')
sound.each(function (index) {
if (!this.paused) {
document.title = '\u25B6 ' + document.title.replace('\u25B6 ', '')
return false;
}
})
});
【问题讨论】:
-
错误告诉你
sound是未定义的。 -
Youre
getElementsByTagName返回一个 nodeList,而不是HTMLElement或DOMNode,您需要遍历该列表并将侦听器附加到您想要侦听它的任何/所有元素. -
虽然这是正确的,但我之前的行是 var sound = document.getElementsByTagName('audio')[0];哪个显示单个 HTMLElement 正确?并且同样的错误适用。
标签: javascript jquery events listener document