2017-02-22 33 views
3

THIS頁面已經取得了自定義的HTML 5音頻播放器「處理程序」:HTML5音頻播放器錯誤:「提供的雙重價值非謂語」

<div class="default-player"> 
    <audio controls="" autoplay="" name="media" id="audio_player"> 
     <source src="http://stream.radio.co/sedf8bacc9/listen" type="audio/mpeg"> 
    </audio> 
</div> 

<div id="audioplayer"> 
    <button id="pButton" class="pause"></button> 
    <div id="timeline"> 
     <div id="playhead"></div> 
    </div> 
    <div id="volume_control"> 
     <label id="rngVolume_label" for="rngVolume">Volume:</label> 
     <input type="range" id="rngVolume" min="0" max="1" step="0.01" value="1"> 
    </div> 
    <div class="current-piece"> 
     <div class="now-playing">Now playing:</div> 
     <script src="https://public.radio.co/embed/sedf8bacc9/song.js"></script> 
    </div> 
</div> 

我寫了這個小腳本實際播放器綁定到「拉手」:

function radioPlayer(){ 

    var music = document.getElementById('audio_player'); 

    function playAudio() { 
     if (music.paused) { 
     music.play(); 
     pButton.className = ""; 
     pButton.className = "pause"; 
     } else { 
     music.pause(); 
     pButton.className = ""; 
     pButton.className = "play"; 
     } 
    } 

    function setVolume(volume) { 
     music.volume = volume; 
    } 

    $('#pButton').on('click', playAudio); 

    $('#rngVolume').on('change', setVolume); 

} 

radioPlayer(); 

當我使用音量範圍輸入我得到這個錯誤:「遺漏的類型錯誤:無法設置「HTMLMediaE‘音量’屬性lement':提供的雙重價值是非有限的。「

它是什麼原因?

+0

哪裏體積變得到界定?由於您只是將setVolume綁定到元素,並且沒有其他任何更進一步的信息,所以處理程序中的卷可能未定義。 – Shilly

+0

@Shilly:那是所有的代碼。 –

+0

因此我問,代碼中的哪個部分是決定「音量」值的部分?我期待像'music.volume = this.val();'因爲沒有任何顯示將volume的值設置爲rngVolume滑塊的值。 – Shilly

回答

3

你的音量說法,其實是一個事件:

function setVolume(e) { 
    var volume = e.target.value; 
    music.volume = parseFloat(volume); 
} 

https://jsfiddle.net/08tgr254/1/

+0

卷甚至沒有定義,爲什麼它是一個雙? (在JS中甚至沒有使用這個名字,因爲所有的數字都是'double',因爲所有的數字都是JS中的64位浮點數) – Shilly

+0

好得多,但可能需要再次解析浮動()。 :) – Shilly