回答編集履歴

4

コードの修正

2021/07/13 11:32

投稿

nekora
nekora

スコア501

test CHANGED
@@ -88,6 +88,8 @@
88
88
 
89
89
  //グローバル変数として1つだけ、作っておくようにする。
90
90
 
91
+ //でないとAudioオブジェクトが複数作られ、クリックの分多重で再生されてしまう
92
+
91
93
  var my_audio = new Audio("音声ファイルのURL");
92
94
 
93
95
 
@@ -120,16 +122,6 @@
120
122
 
121
123
  target.innerHTML = element;
122
124
 
123
-
124
-
125
- //サウンドを停止。長い曲だとクリックするたびに多重で再生されてしまうので
126
-
127
- //画像が表示されたら曲を止める
128
-
129
- //短い効果音などの時は下の行をコメントアウトしてください
130
-
131
- my_audio.pause();
132
-
133
125
  });
134
126
 
135
127
  </script>

3

コードの修正

2021/07/13 11:31

投稿

nekora
nekora

スコア501

test CHANGED
@@ -98,6 +98,8 @@
98
98
 
99
99
  my_audio.currentTime = 0; //再生開始位置を先頭に戻す
100
100
 
101
+ my_audio.loop = false; //ループ再生をOFFにする
102
+
101
103
  my_audio.load(); //先にloadしておかないと動かないブラウザーがある
102
104
 
103
105
  my_audio.play(); //サウンドを再生
@@ -124,7 +126,9 @@
124
126
 
125
127
  //画像が表示されたら曲を止める
126
128
 
129
+ //短い効果音などの時は下の行をコメントアウトしてください
130
+
127
- my_audio.stop();
131
+ my_audio.pause();
128
132
 
129
133
  });
130
134
 

2

コードの修正

2021/07/13 11:11

投稿

nekora
nekora

スコア501

test CHANGED
@@ -82,33 +82,49 @@
82
82
 
83
83
 
84
84
 
85
- document.getElementById("kuriku").addEventListener("click",function() {
85
+ //イベントリスナー内でnewしてるといくつものAudioオブジェクトが作られて
86
+
87
+ //その内、メモリ不足でクラッシュする。
88
+
89
+ //グローバル変数として1つだけ、作っておくようにする。
86
90
 
87
91
  var my_audio = new Audio("音声ファイルのURL");
88
92
 
89
- //ボタンにクリックイベントを設定
90
93
 
91
- my_audio.currentTime = 0; //再生開始位置を先頭に戻す
92
94
 
93
- my_audio.load(); //先にloadしておかないと動かないブラウザーがある
95
+ document.getElementById("kuriku").addEventListener("click",function() {
94
96
 
97
+ //ボタンにクリックイベントを設定
98
+
99
+ my_audio.currentTime = 0; //再生開始位置を先頭に戻す
100
+
101
+ my_audio.load(); //先にloadしておかないと動かないブラウザーがある
102
+
95
- my_audio.play(); //サウンドを再生
103
+ my_audio.play(); //サウンドを再生
96
104
 
97
105
 
98
106
 
99
- //ランダムな番号を生成する
107
+ //ランダムな番号を生成する
100
108
 
101
- var selectnum = Math.floor(Math.random() * imglist.length);
109
+ var selectnum = Math.floor(Math.random() * imglist.length);
102
110
 
103
111
 
104
112
 
105
- //targetのinnerHTMLに画像のソースを入れ込む
113
+ //targetのinnerHTMLに画像のソースを入れ込む
106
114
 
107
- var target = document.getElementById( 'target' );
115
+ var target = document.getElementById( 'target' );
108
116
 
109
- var element = '<img src="' + imglist[ selectnum ] + '" alt="" />';
117
+ var element = '<img src="' + imglist[ selectnum ] + '" alt="" />';
110
118
 
111
- target.innerHTML = element;
119
+ target.innerHTML = element;
120
+
121
+
122
+
123
+ //サウンドを停止。長い曲だとクリックするたびに多重で再生されてしまうので
124
+
125
+ //画像が表示されたら曲を止める
126
+
127
+ my_audio.stop();
112
128
 
113
129
  });
114
130
 

1

コードの修正 説明の修正

2021/07/13 10:41

投稿

nekora
nekora

スコア501

test CHANGED
@@ -1,4 +1,8 @@
1
- CSSが公開されてないので、完全なテストをできませんでしたが、これOKな
1
+ CSSが公開されてないので、完全なテストをできませんでしたが、**現状、当方で動作確認きました**
2
+
3
+
4
+
5
+ **次回からはソースの完全なセットを提示するようにしてください。(CSSも忘れずに!)**
2
6
 
3
7
 
4
8
 
@@ -32,8 +36,6 @@
32
36
 
33
37
  <title>aaa</title>
34
38
 
35
- <!-- <script src="javatest1.js" defer></script> -->
36
-
37
39
  </head>
38
40
 
39
41
 
@@ -58,7 +60,13 @@
58
60
 
59
61
 
60
62
 
63
+   <!-- <script src="javatest1.js"></script> --><!-- 別ファイルにした場合はここで読み込む-->
64
+
61
65
  <script>
66
+
67
+ //画像の配列はscriptタグの直下の階層にvarで記載することでグローバル変数となりどこからでも
68
+
69
+ //参照できるようになります。後で別の処理やイベントハンドラ内からも参照できるので便利です
62
70
 
63
71
  var imglist = [
64
72