2017-05-18 25 views
1

我是新來的Javascript(從一個Python背景)的Javascript:從單一的HTML頁面

我需要一個HTML頁面幾個按鈕,每個將播放音頻文件5秒播放多種音頻文件開始一個特定的時間點。

這是我目前的做法:

<audio id="audio_file_1"> 
 
    <source src="path/to/file/audio_file_1.wav" type="audio/wav"> 
 
</audio><br> 
 
<audio id="audio_file_2"> 
 
    <source src="path/to/file/audio_file_2.wav" type="audio/wav"> 
 
</audio><br> 
 
<button onclick="play_slice()" type="button">Play</button>   
 
<button onclick="play_slice()" type="button">Play</button>   
 

 
<script> 
 
    function play_slice() { 
 
    var x = document.getElementById("audio_file_1"); 
 
    x.currentTime = 10; 
 
    x.play(); 
 
    setTimeout(function(){ 
 
     x.pause(); 
 
     }, 5000);  
 
    } 
 
</script>

目前, 'audio_file_1' 和啓動時間,10秒,在腳本中硬編碼。如何將這些作爲變量傳遞給'play_slice()'函數,以便第一個按鈕可以從整數秒鐘播放第一個音頻文件?

+0

你想如何傳遞變量?你希望這些是每個音頻的特定值還是用戶可以改變它們? –

+0

他們是特定的價值觀,我已經瞭解他們。用戶不需要能夠改變它們。 – PWC

回答

0

把一些輸入你的HTML,並按下按鈕時讀它們的值:

<audio id="audio_file_1"> 
 
    <source src="path/to/file/audio_file_1.wav" type="audio/wav"> 
 
</audio><br> 
 
<audio id="audio_file_2"> 
 
    <source src="path/to/file/audio_file_2.wav" type="audio/wav"> 
 
</audio><br> 
 
<input type="number" name="time" id="time" value="10" /> 
 
<select id="track"> 
 
    <option value="audio_file_1">audio 1</option> 
 
    <option value="audio_file_2">audio 2</option> 
 
</select> 
 
<button onclick="play_slice()" type="button">Play</button>   
 
<button onclick="play_slice()" type="button">Play</button>   
 

 
<script> 
 
    function play_slice() { 
 
    var x = document.getElementById(document.getElementById("track").value); 
 
    x.currentTime = +document.getElementById("time").value; 
 
    x.play(); 
 
    setTimeout(function(){ 
 
     x.pause(); 
 
     }, 5000);  
 
    } 
 
</script>

0

你只需要一個額外的參數如下添加到您的功能。如果不通過,默認值爲10,例如

<audio id="audio_file_1"> 
    <source src="path/to/file/audio_file_1.wav" type="audio/wav"> 
</audio><br> 
<audio id="audio_file_2"> 
    <source src="path/to/file/audio_file_2.wav" type="audio/wav"> 
</audio><br> 
<button onclick="play_slice('audio_file_1',10)" type="button">Play</button>   
<button onclick="play_slice('audio_file_2')" type="button">Play</button>   

<script> 
    function play_slice(currentTime) { 
    var x = document.getElementById(audioId); 
    x.currentTime = currentTime || 10; 
    x.play(); 
    setTimeout(function(){ 
     x.pause(); 
     }, 5000);  
    } 
</script> 
+0

這適用於將時間值作爲參數獲取到函數中。我是否也可以將音頻元素的id作爲參數傳遞給函數,以便可以播放特定文件中的特定時間點? – PWC

+0

是的,你可以;我更新了片段。 – orabis

+0

太好了,非常感謝!這樣可行。 'audioId'從功能簽名中缺失,但添加了修復它。乾杯。 – PWC

相關問題