我有一个带有音频播放文件列表的页面;观众单击链接,然后播放相应的音频文件。
单击新链接后,所有当前音频都需要停止。包括该链接(如果已在播放)。所以;每个链接都是该音频文件的开始/停止。
我已经构建了应该执行此操作的JQuery / JS脚本,但是这些脚本似乎在this
声明和动态方面存在问题。
音频ID与锚点链接中的文本相同。
HTML:
<audio id="Perihelion" src="/music/Perihelion.mp3" preload="auto"></audio>
<audio id="MassedVerses" src='/music/MassedVerses.mp3' preload="auto"></audio>
<a class='music'>Perihelion</a>
<br><BR>
<a class='music'>Massed Verses</a>
JS:
$(document).ready(function() {
/* PlayOn variable is required to know if the click on the link is
starting or stopping THAT audio */
var playOn = true;
var sounds = document.getElementsByTagName("audio");
$(".music").click(function (event) {
/* Prevent anchor default */
event.preventDefault();
/* Stopping all audio, on link click no matter what */
for( i=0; i < sounds.length; i++) {
sounds[i].pause();
}
/* Trying to dynamically generate id reference */
var audioName = $(this).innerHTML;
/* remove whitespace from the string */
audioName = audioName.replace(/\s+/g, "");
var fullAudioIdName = "#" + audioName;
var audio = $(fullAudioIdName)[0];
if (playOn === true) {
audio.play();
playOn = false;
$(this).html("Stop "+audioName);
} else {
audio.pause();
$(this).html(audioName);
playOn = true;
}
});
});
this
音乐类然后触发JS点击功能。 innerHTML
需要从this元素中收集,然后用作查找所关联的<audio>
id
(删除名称空白)的参考]TypeError:audioName是未定义的audioPlay.js:10:9
我也尝试在innerHTML上使用.toString()
,但这也没有成功
$(...)。innerHTML未定义
我想拥有一个动态的JQuery / Javascript脚本,以便它可以播放音频文件,该文件的<audio>
id
是定位标记中的名称。
so:
var audioName = $(this).innerHTML;
/* Massed Verses */
audioName = audioName.replace(/\s+/g, "");
/* MassedVerses */
var fullAudioIdName = "#" + audioName;
/* #MassedVerses */
var audio = $(fullAudioIdName)[0];
/* audio is $(#MassedVerses)[0];
我讨厌Javascript。抱怨抱怨...
实际上,jQuery对象不存在innerHTML属性(不是方法)。您必须在DOM对象(JS)上调用它由于get方法返回的是纯JS DOM对象,所以它是$("...").html()
或$("...").get(0).innerHTML
。