0

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

基本上,我正在制作的页面应该在使用<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 个其他音频文件中的 1 个。此处的地图代码部分:

<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 部分后,我的地图的所有点击都不起作用。我很困惑为什么会这样,因为只更改了一小部分。

谁能帮我弄清楚为什么 onclicks 不起作用以及如何解决它?我对网页设计还是很陌生,真的需要帮助。谢谢!

4

2 回答 2

2

您缺少 的结束</div>标记slide_audio,因此testing_image实际上是slide_audio脚本运行时新对象的子对象并被替换为新对象。

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

在此处输入图像描述

于 2013-03-31T08:05:11.577 回答
0

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

setTimeout("update_audio()", 2500); 函数 update_audio(){ document.getElementById('slide_audio').innerHTML=""; }

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

于 2013-03-31T11:58:46.877 回答