質問するログイン新規登録

回答編集履歴

4

コードの修正

2021/07/13 11:32

投稿

nekora
nekora

スコア501

answer CHANGED
@@ -43,6 +43,7 @@
43
43
  //イベントリスナー内でnewしてるといくつものAudioオブジェクトが作られて
44
44
  //その内、メモリ不足でクラッシュする。
45
45
  //グローバル変数として1つだけ、作っておくようにする。
46
+ //でないとAudioオブジェクトが複数作られ、クリックの分多重で再生されてしまう
46
47
  var my_audio = new Audio("音声ファイルのURL");
47
48
 
48
49
  document.getElementById("kuriku").addEventListener("click",function() {
@@ -59,11 +60,6 @@
59
60
  var target = document.getElementById( 'target' );
60
61
  var element = '<img src="' + imglist[ selectnum ] + '" alt="" />';
61
62
  target.innerHTML = element;
62
-
63
- //サウンドを停止。長い曲だとクリックするたびに多重で再生されてしまうので
64
- //画像が表示されたら曲を止める
65
- //短い効果音などの時は下の行をコメントアウトしてください
66
- my_audio.pause();
67
63
  });
68
64
  </script>
69
65
 

3

コードの修正

2021/07/13 11:31

投稿

nekora
nekora

スコア501

answer CHANGED
@@ -48,6 +48,7 @@
48
48
  document.getElementById("kuriku").addEventListener("click",function() {
49
49
  //ボタンにクリックイベントを設定
50
50
  my_audio.currentTime = 0; //再生開始位置を先頭に戻す
51
+ my_audio.loop = false; //ループ再生をOFFにする
51
52
  my_audio.load(); //先にloadしておかないと動かないブラウザーがある
52
53
  my_audio.play(); //サウンドを再生
53
54
 
@@ -61,7 +62,8 @@
61
62
 
62
63
  //サウンドを停止。長い曲だとクリックするたびに多重で再生されてしまうので
63
64
  //画像が表示されたら曲を止める
65
+ //短い効果音などの時は下の行をコメントアウトしてください
64
- my_audio.stop();
66
+ my_audio.pause();
65
67
  });
66
68
  </script>
67
69
 

2

コードの修正

2021/07/13 11:11

投稿

nekora
nekora

スコア501

answer CHANGED
@@ -40,20 +40,28 @@
40
40
  '003.jpeg', /*  No.03  */
41
41
  ]
42
42
 
43
- document.getElementById("kuriku").addEventListener("click",function() {
43
+ //イベントリスナー内でnewしてるといくつものAudioオブジェクトが作られて
44
+ //その内、メモリ不足でクラッシュする。
45
+ //グローバル変数として1つだけ、作っておくようにする。
44
46
  var my_audio = new Audio("音声ファイルのURL");
45
- //ボタンにクリックイベントを設定
46
- my_audio.currentTime = 0; //再生開始位置を先頭に戻す
47
- my_audio.load(); //先にloadしておかないと動かないブラウザーがある
48
- my_audio.play(); //サウンドを再生
49
47
 
48
+ document.getElementById("kuriku").addEventListener("click",function() {
50
- //ダムな番号生成する
49
+ //ボタにクリックイベント設定
50
+ my_audio.currentTime = 0; //再生開始位置を先頭に戻す
51
- var selectnum = Math.floor(Math.random() * imglist.length);
51
+ my_audio.load(); //先にloadしておかないと動かないブラウザーがある
52
+ my_audio.play(); //サウンドを再生
52
53
 
54
+ //ランダムな番号を生成する
55
+ var selectnum = Math.floor(Math.random() * imglist.length);
56
+
53
- //targetのinnerHTMLに画像のソースを入れ込む
57
+ //targetのinnerHTMLに画像のソースを入れ込む
54
- var target = document.getElementById( 'target' );
58
+ var target = document.getElementById( 'target' );
55
- var element = '<img src="' + imglist[ selectnum ] + '" alt="" />';
59
+ var element = '<img src="' + imglist[ selectnum ] + '" alt="" />';
56
- target.innerHTML = element;
60
+ target.innerHTML = element;
61
+
62
+ //サウンドを停止。長い曲だとクリックするたびに多重で再生されてしまうので
63
+ //画像が表示されたら曲を止める
64
+ my_audio.stop();
57
65
  });
58
66
  </script>
59
67
 

1

コードの修正 説明の修正

2021/07/13 10:41

投稿

nekora
nekora

スコア501

answer CHANGED
@@ -1,6 +1,8 @@
1
- CSSが公開されてないので、完全なテストをできませんでしたが、これOKな
1
+ CSSが公開されてないので、完全なテストをできませんでしたが、**現状、当方で動作確認きました**
2
2
 
3
+ **次回からはソースの完全なセットを提示するようにしてください。(CSSも忘れずに!)**
3
4
 
5
+
4
6
  kurikuのイベントハンドラ内で、音声再生と合わせて画像の差し込みをすればOKです。
5
7
  いらないイベントハンドラは削除しました。
6
8
 
@@ -15,7 +17,6 @@
15
17
  <meta charset="UTF-8">
16
18
  <link rel="stylesheet" type="text/css" href="mainpage.css">
17
19
  <title>aaa</title>
18
- <!-- <script src="javatest1.js" defer></script> -->
19
20
  </head>
20
21
 
21
22
 
@@ -28,7 +29,10 @@
28
29
 
29
30
  </div>
30
31
 
32
+   <!-- <script src="javatest1.js"></script> --><!-- 別ファイルにした場合はここで読み込む-->
31
33
  <script>
34
+ //画像の配列はscriptタグの直下の階層にvarで記載することでグローバル変数となりどこからでも
35
+ //参照できるようになります。後で別の処理やイベントハンドラ内からも参照できるので便利です
32
36
  var imglist = [
33
37
  //画像のURL
34
38
  '001.jpeg', /*  No.01  */