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 が機能しなくなります。小さなセクションしか変更されていないため、これがなぜなのか混乱しています。

オンクリックが機能しない理由と、それを修正する方法を誰かが理解するのを手伝ってくれますか? 私はまだWebデザインにかなり慣れていないので、本当に助けが必要です. ありがとう!

4

2 に答える 2

2

の終了</div>タグがないslide_audioためtesting_image、実際には の子でslide_audioあり、スクリプトの実行時に新しいオブジェクトに置き換えられます。

JavaScript を無効にして Firebug を見ると、それtesting_imageが の中slide_audioにあり、分離していないことがわかります。そのサイトにある Chrome の開発者ツールのスクリーンショットを次に示します。

ここに画像の説明を入力

于 2013-03-31T08:05:11.577 に答える