为什么我的onclick“”不起作用?

时间:2013-03-31 07:42:50

标签: javascript html audio map onclick

免责声明:不要担心我的代码符合“标准”

基本上,我正在制作的页面应该在使用<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不起作用以及如何解决它?我仍然是网页设计的新手,真的需要帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

您错过了</div>的结束slide_audio代码,因此testing_image实际上是slide_audio的子代,并且正在替换为新对象脚本运行。

如果您在禁用JavaScript的情况下查看Firebug,您将能够看到testing_image位于slide_audio内,而不是与其分开。这是该网站上Chrome开发人员工具的屏幕截图:

enter image description here

答案 1 :(得分:0)

你能展示一下evaluate_status()函数吗? 也适用于第一个代码

setTimeout(“update_audio()”,2500); function update_audio(){     。的document.getElementById( 'slide_audio')的innerHTML = “”; }

您应该在settimeout中使用它之前定义该函数。这不会在Chrome中产生错误,但在其他浏览器中,它会。