#「どこ」じゃない。「あちこち」間違ってます
ソースは可読性の高い様式に直して読んでみる
javascript
1function set(){
2 let c = 0 // カウンタが無い
3 , d = new Audio("do1.mp3")
4 , r = new Audio("re.mp3")
5 , m = new Audio("mi.mp3")
6 //, arr = document.getElementById("input").value // str がふさわしい
7 , str = document.getElementById("input").value
8 , test = setInterval(function(){
9 //if(arr[c]=="ド"){ d.play(); }
10 if(str.charAt(c)=="ド"){ d.play(); }
11 //if(arr[c]=="レ"){ r.play(); }
12 if(str.charAt(c)=="レ"){ r.play(); }
13 //if(arr[c]=="ミ"){ m.play(); };
14 if(str.charAt(c)=="ミ"){ m.play(); };
15 c++; // void 0 = (void 0)++
16 //if(c>arr.length){ // 範囲は 0 から length-1
17 if(c==str.length){
18 clearInterval(test);
19 }
20 }, 1000)
21 ;
22}
1)カウンタ利用する変数 c が初期化されていません
void をインクリメントしても void です。
c の追記だけでも、意図した再生に近づけます。
2)文字列処理を理解できていますか?
arr じゃなく、str のほうが可読性が高い。
あと、配列添字形式じゃなく、 charAt()
3)c>length はありえない
length を取りうるものは 0 から始まります。
4)関数トリガとなるDOMが明示されていない。
HTML
1<input id="input" placeholder="ド,レ,ミ を任意の順で3文字入力">
2<button onclick="set()">再生</button>
5)ほかもJavaScriptの基本を理解しているか疑問を感じる
- 変数の型
- document.getElementById()
- setInterval()
- DOM の value プロパティの意味
- etc..
とりあえず、辞書のように使えるこれ 改定第5版 ポケットリファレンス 。必携ですよ。