免责声明:不要担心我的代码符合“标准”
基本上,我正在制作的页面应该在使用<object data="someAudio.wav">
标签加载时播放一个简短的音频剪辑。然后我使用Javascript和setTimeout()在几秒钟的延迟后播放几个其他音频文件。 setTimeout通过使用innerHTML并使用新对象重写正确的div部分来实现此目的,其中对象只是另一个音频。例如:
<script type="text/javascript">
setTimeout("update_audio()", 2500);
function update_audio(){
document.getElementById('slide_audio').innerHTML="<object classid='clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95' height='0' width='0'><param name='FileName' value='../../../Audio_general/good.wav'><param name='autoplay' value='true'><object type='audio/mpeg' height='0' width='0' data='../../../Audio_general/good.wav'><param name='controller' value='true'><param name='autoplay' value='false'></object></object>";
}
</script>
我将图像链接到地图,以便将其划分为4个部分。当我点击一个部分时,它将调用一个函数,该函数将根据我的选择执行逻辑,然后应该播放2个其他音频文件中的一个。地图代码部分在这里:
<map id="testing_image" name="pictureMap">
<area id="image1" shape="rect" coords="0, 0, 449, 331" onclick="evaluate_status(1);" onmouseover="this.style.cursor='pointer'" alt="FB">
</map>
我的问题是,地图的onclick="evaluate_status()"
部分仅在我更新innerHTML之前有效。意思是,如果我可以在2.5秒之前点击一个部分(第一次innerHTML更新),它将播放正确的音频。但是,在使用innerHTML更新div部分之后,我的地图的所有onclick都不会起作用。我很困惑为什么这是因为只有一小部分被改变。
任何人都可以帮我弄清楚为什么onclicks不起作用以及如何解决它?我仍然是网页设计的新手,真的需要帮助。谢谢!
答案 0 :(得分:2)
您错过了</div>
的结束slide_audio
代码,因此testing_image
实际上是slide_audio
的子代,并且正在替换为新对象脚本运行。
如果您在禁用JavaScript的情况下查看Firebug,您将能够看到testing_image
位于slide_audio
内,而不是与其分开。这是该网站上Chrome开发人员工具的屏幕截图:
答案 1 :(得分:0)
你能展示一下evaluate_status()函数吗? 也适用于第一个代码
setTimeout(“update_audio()”,2500); function update_audio(){ 。的document.getElementById( 'slide_audio')的innerHTML = “”; }您应该在settimeout中使用它之前定义该函数。这不会在Chrome中产生错误,但在其他浏览器中,它会。