- ベストアンサー
ランダム音声と正解・不正解の表示
連続の質問になりますが、よろしくお願いします。 以下のようなことは、Javascriptでどのように表現したらよいのでしょうか。 1)sound01.mp3~sound03.mp3の中からランダムに音声を鳴らす。 2)01から03の選択肢があって、それをクリックした時、対応するナンバーの 場合、正解を示すアラートダイアログを表示させ、間違っている場合は 不正解を示すアラートダイアログを表示させる。 1)までに関しては数々の本やWebサイトを参考にすればできますが、2)に つなげることができません。おわかりの方、お教え下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
JavaScriptは自信がないんですが、こんな感じでいかがでしょうか? 選択のインターフェイスはボタンにしましたが、勿論ラジオボタン等でも可能です。 Arrayの中身を増やせば自動的にボタンも増えます。 ただbgsoundはIE限定みたいなので、他のブラウザにも対応させるならEMBEDタグを使った方がいいでしょう。 もっともその場合も、ユーザーのブラウザにプラグインが組み込まれている必要がありますが。 ------------------------- <html> <head> <script language="javascript"> <!-- var sound = new Array("sound01.mp3","sound02.mp3","sound03.mp3"); var r = Math.floor(Math.random() * sound.length); document.write('<bgsound src="'+sound[r]+'">'); function ansCheck(n){ if(sound[r] == sound[n]){alert('正解です');} else{alert('不正解です');} } //--> </script> </head> <body> <script language="javascript"> <!-- for(i = 0; i < sound.length; i++){ document.write('<input type="button" onClick="javascript:ansCheck('+i+')" value="'+sound[i]+'"><br>'); } //--> </script> </body> </html>
その他の回答 (2)
- ntm98
- ベストアンサー率26% (73/273)
リロード以外の方法もあるかもしれませんが、ちょっとすぐには思いつきませんでした。 画面全体がリセットされるのを防ぐなら、音が出るページをIFRAME内で表示すればいけるかもしれませんね。
お礼
何度もお返事ありがとうございます。 ともかく希望の機能は使えますので、これでよしと します。お世話になりました。
- ntm98
- ベストアンサー率26% (73/273)
>シャッフルし直す これをリロードで実装して良いなら、以下のボタンを設置すればOKです。 <input type="button" value="シャッフル" onClick="location.reload()">
お礼
よくわかりました。 リロード以外の方法はあるんでしょうか?
お礼
回答ありがとうございます。 試してみたところ、確かに音がランダムに出て、ボタンを選べば正解・不正解がアラートで出てきますね。 利用者が限定されているページを想定しているので、bgsound利用は特に問題ありませんが、embedの利用も検討してみます。ありがとうございました。
補足
もう少しお教えください。 いろいろいじって自分なりに改造した結果、ページを読み込む度に音が 出る設定を、ボタンクリックによって音声を鳴らす形に変えました。 しかし、ページを読み込み直さないと乱数のrが変化せず、そのままでは 何度押しても同じ音しか出ません。音声が出るボタンを押して選択肢を選んだ 後、シャッフルし直すボタンかリンクを作りたいのですが、どう記述すれば よいでしょうか。