音声とポップアップ表示を一つのボタンで行う方法

このQ&Aのポイント
  • ボタンをクリックして音声とポップアップ表示を同時に行う方法について教えてください。
  • 現在、音声とポップアップ表示を別々のボタンで行っていますが、一つのボタンで同時に実行したいです。
  • 試してみた方法ではうまくいかなかったため、他に解決策はありますか?
回答を見る
  • ベストアンサー

音声とポップアップ表示を一つのボタンで行う方法

ネット情報のコピペでhead部分に <script> function soundbell(n) { // 割り当てるID名(引数のnを連結して指定) var id = 'sound-'+n ; // 初回の再生以外だったら音声ファイルの再生ポイントを先頭にしておく if( typeof( document.getElementById( id ).currentTime ) != 'undefined' ) { document.getElementById( id ).currentTime = 0; } // [ID:sound-file]の音声ファイルを再生[play()]する document.getElementById( id ).play() ; } </script> を書いて body部分に <a onClick="soundbell(1)"><input type="button" value="aaaaaa"></a> <a onClick="soundbell(2)"><input type="button" value="****"></a> <audio id="sound-1" preload="auto"> <source src="correct-answer.mp3" type="audio/mp3"> </audio> <audio id="sound-2" preload="auto"> <source src="wrong-answer.mp3" type="audio/mp3"> </audio> を記述してうまく音が出ています。 ここで、同じボタンをクリックすると同時に、音とポップアップ表示することに挑戦していますが、なかなかうまくいきません。 どなたか教えてくれませんかね。

質問者が選んだベストアンサー

  • ベストアンサー
  • Proof4
  • ベストアンサー率78% (151/192)
回答No.1

単にアラートを表示するだけであれば、音声ファイルの再生と同時にalert()を実行すればよいです。 function soundbell(n) { // 割り当てるID名(引数のnを連結して指定) var id = 'sound-'+n ; // 初回の再生以外だったら音声ファイルの再生ポイントを先頭にしておく if( typeof( document.getElementById( id ).currentTime ) != 'undefined' ) { document.getElementById( id ).currentTime = 0; } // [ID:sound-file]の音声ファイルを再生[play()]する document.getElementById( id ).play(); // アラート表示 alert('アラート'); }

YNishikawa
質問者

お礼

Proof4さん ありがとうございます。 私のやりたいことが出来ました。 ちょっとしたことなのですが、基礎知識がないので、大分時間をかけていたのにうまくいきませんでした。 嬉しいです。

関連するQ&A

  • 複数のボタンで音声とポップアップを同時に出す方法

     大阪府地図形当てクイズを作成しています。ボタンをクリックすると音声が鳴るところまではうまく行きましたが、同じボタンで同時に「正解」などの表示を出す方法について教えてください。 コードを下に示しますが、<script>の最後に // アラート表示 alert('正解'); } を加えるとポップアップはすべてのボタンで「正解」になってしまいます。  <a onClick="soundbell(1)" >のところに何か付け加えるとどうかいろいろ試していますが、なかなかうまく行きません。 <script> function soundbell(n) { // 割り当てるID名(引数のnを連結して指定) var id = 'sound-'+n ; // 初回の再生以外だったら音声ファイルの再生ポイントを先頭にしておく if( typeof( document.getElementById( id ).currentTime ) != 'undefined' ) { document.getElementById( id ).currentTime = 0; } // [ID:sound-file]の音声ファイルを再生[play()]する document.getElementById( id ).play() ; } </script> </head> <BODY> <p align="center"> <a onClick="soundbell(1)"><input type="button" value=" 能勢町 "></a> <a onClick="soundbell(2)"><input type="button" value=" 高槻市 "></a> <a onClick="soundbell(2)"><input type="button" value=" 豊能町 "></a> <a onClick="soundbell(2)"><input type="button" value=" 島本町 "></a> //----- 略 ----- <a onClick="soundbell(2)"><input type="button" value=" 大阪市 "></a> </p> <audio id="sound-1" preload="auto"> <source src="correct-answer.mp3" type="audio/mp3"> </audio> <audio id="sound-2" preload="auto"> <source src="wrong-answer.mp3" type="audio/mp3"> </audio> </BODY> </HTML>

  • jsと<audio>タグについて

    HTML5の<audio>タグを使用し、試聴プレーヤーのようなものを作りたいと思っています。 こちらのサイト(http://www.html5-memo.com/audio/player001/)様から拝借したソースが以下です。 javascript------------------ function audioPlay(){ document.getElementById("aka").play(); } function audioPause(){ document.getElementById("aka").pause(); } html----------------------- <audio id="aka" preload="auto"> <!-- 1曲目 --> <source src="audio/aka.mp3" type="audio/mp3"></audio> <input type="button" onclick="audioPlay()" value="再生"> <input type="button" onclick="audioPause()" value="停止"> <audio id="midori" preload="auto"> <!-- 2曲目 --> <source src="audio/midori.mp3" type="audio/mp3"></audio> <input type="button" onclick="audioPlay()" value="再生"> <input type="button" onclick="audioPause()" value="停止"> …以下同じ様にに7曲分… ------------------------- 現状では当然1曲目しか再生されません。 onclick="audioPlay()"がfunction audioPlay()を読みに行き、その中のgetElementById("aka")でID「aka」を指定して<audio id="aka" preload="auto">を実行している、というのは調べてわかったのですが、2曲目のID「midori」を再生するにはどうしたらいいのでしょうか。 audioPlay('aka')、audioPlay('midori')などとして引数を利用するのかな、と思ったのですが、getElementById("aka")がよくわからず・・・ 初心者で質問の内容すら上手く説明できたか不安なのですが、内容を察してくださる方お教え願えませんか。 よろしくお願い致します。

  • 音鳴らず。ソース見てください。

    クリックで効果音を出したくて下記ソース書きましたが、音が出ません。 どこが間違ってるのでしょうか?使用しているブラウザはFirefoxです。よろしくお願いします。 <!DOCTYPE html> <head> <meta charset="Shift_JIS"> <script type="text/javascript"> function naru() { document.getElementById("mySound").play(); } </script> </head> <body> <audio id="mySound" preload="auto"> <source src="oto1.mp3" type="audio/mp3"> <source src="oto1.ogg" type="audio/ogg"> <source src="oto1.wav" type="audio/wav"> </audio> <form> <input type="button" value="oto" onclick="naru()"> </form> </body> </html>

    • ベストアンサー
    • HTML
  • 複数ボタンのクリックイベント

    JavaScriptのイベントなのか変数のスコープなのかで質問がございます。 (一番下に全ソースを貼りました。見づらくて申し訳ありません。) htmlに複数の似た名前のボタンがあります。 名前:button_n (n = 0 to 9) 押されたボタンに応じた処理を登録しようと思い、下記を 9個書いたところ 望んだ動きをしました。 document.getElementById('button_'+0).onclick = function() { clicked(0); } document.getElementById('button_'+1).onclick = function() { clicked(1); } ...... document.getElementById('button_'+9).onclick = function() { clicked(9); } これでは芸がないので、添字の部分を変数にし、下記のようにしたところ for (i=0; i<10; i++) {    document.getElementById('button_'+i).onclick = function() { clicked(i); } } どのボタンを押しても動きません。 私の認識、以下です。  ・0~9のイベントは正しく登録されている。  ・しかし、全てがchecked(10)を呼んでいる 質問1  これを回避する方法と、その対処理由を教えて頂きたくお願い致します。   質問2(オプション)  参考になる資料を教えていただければ幸いです。  例)サイ本のどこを読めばいいよ。とか、このURLがわかりやすいよ。等 よろしくお願い致します。 ■ソース <!DOCTYPE html><html lang="ja"> <head><meta charset="utf-8"></head> <body> <h2>所望の動きをする</h2> <input type="button" id="button_0" value="0"> <input type="button" id="button_1" value="1"> <h2>所望の動きをしてくれない</h2> <p></p> <input type="button" id="button_2" value="2"> <input type="button" id="button_3" value="3"> <script> (function() { document.getElementById('button_'+0).onclick = function() { clicked(0); } document.getElementById('button_'+1).onclick = function() { clicked(1); } /* 配列の最後の添字が使われる気がする。 */ for (i=2; i<4; i++) {    document.getElementById('button_'+i).onclick = function() { clicked(i); } } function clicked(n) { var btn = document.getElementById('button_' + n); console.log(btn.value); alert(btn.value); } })(); </script> </body><html>

  • javascriptであるボタンを押すと他のボタンの表記が変わるというプログラムをつくりたいのですが。

    モと表示された1個のボタンと穴と表示された2個のボタンを用意する。モのボタンをクリックするとそのボタンの法事は穴に変わり、残り2つの穴のどれかがモに変わる。穴のボタンをクリックされても何も変わらないプログラムをつくりたいのです。 最初の状態からモをクリックして他のボタンを変化させることはなんとかできたのですが、そのあと移動したモをおしても同じことをできるようにするのができなくて困ってます。 あと、できたらモを押して2つの穴のどちらかがモにかわるとき穴からモにかわるボタンは左側のもの、とかは決まってないでランダムだとうれしいです>< おねがいします!!! 全然違うかもしれませんが、つくってみたのものっけておきます <html> <head> <title></title> <script type="text/javascript"> var moFlg = true; function func(){ if (moFlg) { document.getElementById("btn01").innerHTML = "穴"; document.getElementById("btn02").innerHTML = "モ"; document.getElementById("btn03").innerHTML = "穴"; moFlg = !moFlg; } else { document.getElementById("btn01").innerHTML = "穴"; document.getElementById("btn02").innerHTML = "穴"; document.getElementById("btn03").innerHTML = "モ"; moFlg = !moFlg; } } </script> </head> <body> <button id="btn01" type="button" " onClick="func()"> モ </button> <button id="btn02" type="button" " onClick=""> 穴 </button> <button id="btn03" type="button" " onClick=""> 穴 </button> </body> </html> ここまでです。 でもできたら<input type ~ button ~ onClick>とかがつかわれているとうれしいです。

  • JqueryMobileでフォームボタンを非表示

    JqueryMobileを使用している環境下でフォームボタンを非表示にする方法を探しています。 以下はID1の消去ボタンをクリックすると、ID2のボタンが消えることを期待しているものです。 しかし、ID2のボタンは消えませんでした。 どのような方法で、フォームボタンを非表示にできるのでしょうか。 なお、JqueryMobileを使用していない環境では、 問題なくID2のボタンが非表示になることを確認していますので、 JqueryMobile使用時のJavascriptの制限が何かしらありそうなのですが・・・。 <form name="myForm" action="#"> <input type="button" value="消去" name="button1" id ="1" onclick="a()"> <input type="button" value="消えるボタン" name="button2" id ="2" > </form> <script type="text/javascript"> <!-- function a(){ var n = document.getElementById("#2"); n.style.visibility = "hidden"; $('#2').button('refresh'); } // --> </script>

  • javascriptのonclickに関数を追加?

    現在、javascriptでinput要素に新しくonclick='hoge()'などの関数を追加したいのですができません。 色々調べたのですが、結局わからなかったので質問させていただきます。 何卒、ご教授宜しくお願いします。 ■やろうとしていること 下記ソースのボタンをどれかクリックしたら、 新しく、<input type="button" value="次へ" onclick="next()" />というのを<span>に 生成したいのですが、onclickが追加されずに困っております。 どのようにしたらよいのでしょうか?ちなみにtypeとvalueは生成されています。 <form name="test"> <input type="button" value="" id="answer_0" onclick="test(0)" /> <input type="button" value="" id="answer_1" onclick="test(1)" /> <input type="button" value="" id="answer_2" onclick="test(2)" /> </form> <span id="test2"></span> <script> function test(n) { ・・・ 中略 var nq = document.createElement('input'); nq.type = "button"; nq.value = '次へ'; nq.onclick = "next()"; document.getElementById('test2').appendChild(nq); } </script> 以上、宜しくお願い申し上げます。

  • 「ポタン」で表示・非表示 (つづき)(^^;

    「ポタン」で表示・非表示 ブロック<Div></Div>の「表示・非表示」を「ポタン」でやりたいのですが。。の件で、下記の回答をいただき、できたのですが、 最初に「★非表示」の状態にしたい場合は、どうしたらいいのでしょうか? よろしく願いいたします。 <html> <body> <div id="a">abcdefg</div> <input type="button" value="on/off" onClick="disp('a')"> <hr> <div id="b">abcdefg</div> <input type="button" value="on/off" onClick="disp('b')"> <hr> <script> function disp(id){ // alert(document.getElementById(id).style.display=='none'?'block':'none'); document.getElementById(id).style.display = document.getElementById(id).style.display=='none'?'block':'none'; } </script>

  • CSSでのボタンのエフェクト

    数字を小さい順にタップしていくコードなのですが この状態だと一度押されたものは背景が変わり押せなくなります ですがCSSでボタンのデザインを変えると押したかどうかわからなくなってしまいます コードは以下の通りです <body> <h1>小さい数字からタッチ!</h1> <p>Time: <span id ="time">0.0</span> sec. </p> <div id="board"> <input type="button" id="button_0" value="?" onclick="touched(0);"> <input type="button" id="button_1" value="?" onclick="touched(1);"> <input type="button" id="button_2" value="?" onclick="touched(2);"><br> <input type="button" id="button_3" value="?" onclick="touched(3);"> <input type="button" id="button_4" value="?" onclick="touched(4);"> <input type="button" id="button_5" value="?" onclick="touched(5);"><br> <input type="button" id="button_6" value="?" onclick="touched(6);"> <input type="button" id="button_7" value="?" onclick="touched(7);"> <input type="button" id="button_8" value="?" onclick="touched(8);"><br> </div> <p><input type="button" value="start!" onclick="timerStart();"></p> <script> var currentNum; var timet; var startTime; var isPlaying = false; function timerStart() { initBoard(); currentNum = 0; startTime = (new Date()).getTime(); if (!isPlaying) { isPlaying = true; runTimer(); } } function initBoard() { var nums = [0,1,2,3,4,5,6,7,8]; var num; var btn; for (var i=0; i<9; i++) { num = nums.splice(Math.floor(Math.random() * nums.length), 1); btn = document.getElementById('button_' + i); btn.value = num[0]; btn.disabled = false; } } function touched(n) { var btn = document.getElementById('button_' + n) if (btn.value == currentNum) { btn.disabled = true; currentNum++; } if (currentNum == 9){ clearTimeout(timer); isPlaying = false; alert('Your Score: ' + document.getElementById('time').innerHTML); } } function runTimer() { document.getElementById('time').innerHTML = (((new Date()).getTime() - startTime) / 1000).toFixed(1); timer = setTimeout(function() { runTimer() ; }, 100); } </script> </body> CSSは #board > input { height: 60px; width: 90px; margin-right : 5px; margin-top : 5px; background: -moz-linear-gradient(top,#09C 0%,#09C 50%,#069 50%,#069); background: -webkit-gradient(linear, left top, left bottom,from(#09C), color-stop(0.5,#09C), color-stop(0.5,#069), to(#069)); border: 1px solid #DDD; color: #FFF; padding: 10px 0; } ですどうすればデザインの変更を保ったまま押されたときに背景を変えることができますか?

  • audioタグを不特定多数使用する場合の設定

    HTML5のaudioタグで音声再生しようとしています。 コントローラーは非表示にして、inputタグで画像を指定しています。再生さえできればよいので、設定はplay()のみです。解説サイトのスクリプトを元に、play()だけ残しています。 ------------------------------ ☆HTML側 <audio id="audio" preload="auto"> <source src="http://......" type="audio/wav"></audio> <source src="http://......" type="audio/mpeg"></audio> <input type="image" src="audio.png" alt="再生" onclick="audioPlay()" value="再生"> ☆JavaScript側 function audioPlay(){ document.getElementById("audio").play(); } ------------------------------ この設定で問題なく機能するのですが、この場合、 id指定をしているので、1ページに1つしか使えません。 1ページに不特定多数のaudioタグを使いたいのですが、どのように設定すれば良いのかGoogleで探しても(わたしの理解できるレベルのものは)見つかりませんでした。audioタグはまだこれから普及していないので、情報が少ないようです。 JavaScript側で設定することになるのでしょうが、JavaScriptはほとんどわからないので、お手上げの状態になっています。 ご教授ください。