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

回答編集履歴

1

ソース:修正の追記

2018/09/15 12:47

投稿

_lemon2003_
_lemon2003_

スコア274

answer CHANGED
@@ -16,4 +16,73 @@
16
16
  audioList[i].addEventListener("play", playAudioHandler);
17
17
  }
18
18
  })();
19
- ```
19
+ ```
20
+
21
+ # 追記1
22
+ ```html
23
+ <!-- 曲リスト全体 -->
24
+ <script>
25
+ $(function() {
26
+ $.ajax({
27
+ url: 'musics.xml?20180808',
28
+ type: 'GET',
29
+ dataType: 'xml',
30
+ timeout: 1000,
31
+ error: function() {
32
+ console.log("曲リストの読み込みに失敗しました");
33
+ },
34
+ success: function(xml) {
35
+ $(xml).find('music').each(function() {
36
+ $("#musics_list").append(
37
+ '<article class="music"><div><div class="type"><div>' +
38
+ $(this).find('type').text() + '</div></div><h4>「' +
39
+ $(this).find('title').text() + '」</h4><img src="img/jacket/' +
40
+ $(this).find('jacket').text() + '" alt="' +
41
+ $(this).find('title').text() + '"><span class="mask"><p>' +
42
+ $(this).find('comment').text() + '</p><a href="' +
43
+ $(this).find('mp3').text() + '" download="music/' +
44
+ $(this).find('mp3').text() + '">MP3ダウンロード</a></span><div class="audio"><audio src="music/' +
45
+ $(this).find('mp3').text() + '" controls="controls"></audio></div></div></article>'
46
+
47
+ );
48
+ });
49
+
50
+ $(xml).find('music:lt(1)').each(function() {
51
+ $("#new_songs").append(
52
+ '<li><img src="img/jacket/' +
53
+ $(this).find('jacket').text() + '" alt="' +
54
+ $(this).find('title').text() + '"><h4>「' +
55
+ $(this).find('title').text() + '」</h4><p>' +
56
+ $(this).find('comment').text() + '</p><a href="music/' +
57
+ $(this).find('mp3').text() + '" download="' +
58
+ $(this).find('mp3').text() + '">MP3ダウンロード</a><audio src="music/' +
59
+ $(this).find('mp3').text() + '" controls="controls"></audio></li>'
60
+ );
61
+ });
62
+
63
+ let $playingAudio = null;
64
+ let $audioList = $("div.audio>audio, ul#new_songs>li>audio");
65
+
66
+ let playAudioHandler = function playAudioHandler(event){
67
+ if($playingAudio && $playingAudio[0] !== event.target){
68
+ $playingAudio[0].pause();
69
+
70
+ // 停止時に位置を最初にする場合は下↓のコメントを外す
71
+ // playingAudio.currentTime[0] = 0;
72
+ }
73
+ $playingAudio = $(event.target);
74
+ }
75
+
76
+ for(let i = 0, l = $audioList.length; i < l; i++){
77
+ $audioList[i].addEventListener("play", playAudioHandler);
78
+ }
79
+ }
80
+ });
81
+ });
82
+ </script>
83
+ ```
84
+
85
+ 動作しないため訂正版。
86
+ 当該ページの34行目辺りの `<!-- 曲リスト全体 -->` から
87
+ 115行目辺りの `<!-- 常に1曲のみ再生の制御 ここまで -->` までを
88
+ 上記のコードに書き換えてください。