私は何かばかげていると思います。私は、オーディオソースのタイトルを持つたくさんのボタンを作成しています。ユーザーがボタンをクリックすると、オーディオプレーヤーでソースが更新されます。JavaScriptでオーディオソースをプログラムで変更するときに問題が発生する
残念ながら、オーディオソースは常に最後のアイテムのようです。言い換えれば、ボタンは正しいソースに対応していません...それらはすべて同じソースに対応しています。
episodes = {0: {title: 'Audio 1', url: 'audio1.mp3'}, 1: {title: 'Audio 2', url: 'audio2.mp3'}, 2: {title: 'Audio 3', url: 'audio3.mp3'}};
for (var i = 0; i < Object.keys(episodes).length; i++) {
var title = episodes[i].title;
var url = episodes[i].url;
var button = document.createElement('button');
button.innerHTML = title;
button.addEventListener("click", function() {
$('#player').attr('src', url)[0];
$('#player')[0].load();
});
document.body.appendChild(button);
}
あるいは、フィドルとして:フィドルでhttps://jsfiddle.net/jmg157/1cL9p1qa/
、あなたがボタンをクリックするとことに気づくでしょう、でメッセージここで
は、私はそれを持っているようなコードですコンソールは常に同じ値を表示します。
ご協力いただければ幸いです。
はあなたがエピソードでキーとして0,1,2いることを確認していますか? – brk
これは閉鎖の問題だと思います。たとえば、すべての反復でurlが上書きされ、すべてのボタンがaudio3.mp3をロードします。この回答の関連するセクションをチェックすると、問題のガイダンスが表示されます。 –