2017-07-25 15 views
2

をクリックして、エラーに変更したオーディオファイル私は、ボタンのクリックで音声ファイルを変更しようとしています

Uncaught TypeError: audio.load is not a function

を取得しています私のコードは以下の通りです、アイデアは、ボタンを押して、音声ファイルを押すことです変更されます。

audio.load()行がないと、コードが実行され、srcは更新されますが、音声は変更されません。私は何が欠けていますか?

HTML:

<!DOCTYPE HTML> 
<html> 
<body> 
    <br> 
    <audio controls> 
    <source src = "audio_file_1.mp3" 
     id="audio" type="audio/mpeg"> 
    Your browser does not support the audio element! 
    </audio> 
    <br> 
    <button onClick="changeAudio();">Change</button> 
</body> 
<script src="temp.js"></script> 
</html> 

Javascriptを:

// temp js 
var a = 1; 
function changeAudio() { 
    var audio = document.getElementById('audio'); 
    if (a==1) { 
    audio.src = 'audio_file_1.mp3'; 
    a = 2; 
    } 
    else { 
    audio.src = 'audio_file_2.mp3'; 
    a = 1; 
    } 
    audio.load(); 
} 

changeAudio(); 

誰もが私はaudio_file_1.mp3audio_file_2.mp3の代わりに使用することができます例のサウンドファイルを知っていれば(また、私は、コードを更新するために幸せになります誰でも簡単に実行できます)


編集WRT Rob M's ans WERは:

同じ問題を持つ人のための

、解決策は2つの行を変更することです:

まず、HTMLコードで、<audio control>はjavascriptのコードaudio.load()で、<audio control id="audio_id">

第二に向ける必要があります<source>タグには​​イベントはありませんdocument.getElementById('audio_id').load();

+1

は、あなたが 'を呼び出すしてはいけません.LOAD()'実際の '

<audio id="audio" controls> <source src = "audio_file_1.mp3" id="track" type="audio/mpeg"> Your browser does not support the audio element! </audio> 

、変化する音声ファイルのようなものでなければなりません素子? –

+0

はい、絶対に間違いありません。あなたが答えを書いたければ、私はそれを受け入れます –

答えて

3

に目を向ける必要があり、それは<audio>タグにある - 親にload()を呼び出すようにコードを更新<audio>タグとそれは動作するはずです。

0

<audio>要素にはid属性でアクセスしようとしていますが、id属性をオーディオタグに設定していないと思います。 ``

var a = 1; 
function changeAudio() { 
    var audio = document.getElementById('audio'); 
    if (a==1) { 
    document.getElementById('track') = 'audio_file_1.mp3'; 
    a = 2; 
    } 
    else { 
    document.getElementById('track') = 'audio_file_2.mp3'; 
    a = 1; 
    } 
    audio.load(); 
} 

changeAudio(); 
+0

ソースはidに "id =" audio "'と設定されたidを持っています。 '

関連する問題