多くのセルを含む HTML テーブルがあり、各セルにクラスまたは ID を与えて、対応するサウンドを再生できるようにしたいと考えています。セルが多いので、Javascript+jQuery でこのタスクを自動化し、HTML の乱雑さを減らしたいと考えています。
したがって、テキストが含まれるセルがあるとしますa
。そのセルのクラスをに設定し、サウンドを再生するIDをclick_sound_a
持つタグを生成します。(セルに ID を使用することもできますが、いくつかの重複があると思います。)<audio>
sound_a
a.mp3
例として、5 つのサウンドを含む次のコードがあります。
<script type="text/Javascript">
// trigger play event on an audio element
function playSound(sound) {
$("#sound_"+sound).get(0).play();
}
$(document).ready(function() {
var sounds = ["a", "i", "u", "e", "o"];
// create HTML5 <audio> elements
for (var i in sounds) {
$("<audio id='sound_"+sounds[i]+"'> <source src='/downloads/sounds/"+sounds[i]+".mp3' type='audio/mpeg'> </audio>").appendTo("#page");
// make columns clickable to play sounds
$(".click_sound_"+sounds[i]).click(function() {
playSound(sounds[i]);
});
} // end for
});
</script>
問題は、ループが終了すると、正しいクラスが割り当てられていても、すべてのセルが最後の要素のサウンドを取得することです。したがって、この場合、すべてのセルが再生されo.mp3
ます。バグはどこですか?