javascript中动态生成id引用的问题
我有一个音频播放文件列表页面;查看器单击链接,播放相应的音频文件 单击新链接时,所有当前音频都需要停止。包括那个链接,如果它已经在播放的话。所以每个链接都是该音频文件的开始/停止 我已经构建了一个JQuery/JS脚本来实现这一点,但是这些脚本似乎在javascript中动态生成id引用的问题,javascript,jquery,dynamic,this,Javascript,Jquery,Dynamic,This,我有一个音频播放文件列表页面;查看器单击链接,播放相应的音频文件 单击新链接时,所有当前音频都需要停止。包括那个链接,如果它已经在播放的话。所以每个链接都是该音频文件的开始/停止 我已经构建了一个JQuery/JS脚本来实现这一点,但是这些脚本似乎在这个声明和动态性方面存在问题 音频Id与锚链接中的文本相同 HTML: 我错过了什么? 我讨厌Javascript。咕噜咕噜…事实上,jQuery对象的innerHTML属性(不是方法)并不存在。必须在DOM对象(JS)上调用它 它是$(“..”).
这个声明和动态性方面存在问题
音频Id与锚链接中的文本相同
HTML:
我错过了什么?
我讨厌Javascript。咕噜咕噜…事实上,jQuery对象的innerHTML属性(不是方法)并不存在。必须在DOM对象(JS)上调用它
它是$(“..”).html()
或$(“..”).get(0).innerHTML
,因为get方法返回纯JS DOM对象。innerHTML
是元素属性,而不是jQuery属性。请改用this.innerHTML
或$(this.html()
。@Taplar so$(this).innerHTML
变为$(this).html()
是,这似乎有效。谢谢,是的。jQuery不直接公开元素属性。要访问它们,您必须使用prop()
方法,或者使用特定的实用程序方法,例如本例中的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>
$(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;
}
});
});
var audioName = $(this).innerHTML;
/* Massed Verses */
audioName = audioName.replace(/\s+/g, "");
/* MassedVerses */
var fullAudioIdName = "#" + audioName;
/* #MassedVerses */
var audio = $(fullAudioIdName)[0];
/* audio is $(#MassedVerses)[0];