2017-03-10 13 views
0

私は、オーディオトラックの位置を変更するためにスライダーを使用しようとしています。私が抱えている問題は、スライダをマウスで操作すると、位置を変えるのではなく、オーディオが停止するということです。私は私のaddeventlistener終了機能を削除しようとしましたが、それは問題を解決しませんでした。JavaScriptのオーディオの位置を変更する方法は?

任意の助けいただければ幸いです。

HTML:

<audio id="music"> 
    <source src="media/mexico-music.mp3" type="audio/mpeg"/> 
</audio> 
<button id="playpausebtn" class="play"></button> 
<input id="seekslider" type="range" min="0" max="100" value="0" step="1"> 
<input id="volumeslider" type="range" min="0" max="100" value="100" step="1"> 

JavaScriptを:あなたが使用する前に、seeksliderの値を設定しているためです

seekslider.value = event.clientX = seekslider.offsetLeft; 

$(document).ready(function() { 
    var music = document.getElementById("music"), 
     playpausebtn = document.getElementById("playpausebtn"), 
     seekslider = document.getElementById("seekslider"), 
     volumeslider = document.getElementById("volumeslider"), 
     seeking, 
     seekto; 

    // PLAY/PAUSE AUDIO 
    function playAudio() { 
     if (music.paused) { 
      music.play(); 
      playpausebtn.className = "pause"; 
     } else { 
      music.pause(); 
      playpausebtn.className = "play"; 
     } 
     music.addEventListener('ended', function() { 
      playpausebtn.className = "Play"; 
     }); 
    } 

    // SEEK MUSIC POSITION 
    function seek(event) { 
     if(seeking) { 
      seekslider.value = event.clientX = seekslider.offsetLeft; 
      seekto = music.duration * (seekslider.value/100); 
      music.currentTime = seekto; 
     } 
    } 

    // VOLUME CONTROL 
    function setVolume() { 
     music.volume = volumeslider.value/100; 
    } 

    //EVENT HANDLERS 
    playpausebtn.addEventListener("click", playAudio); 
    seekslider.addEventListener("mousedown", function (event) { seeking = true; seek(event); }); 
    seekslider.addEventListener("mousemove", function (event) { seek(event); }); 
    seekslider.addEventListener("mouseup", function() { seeking = false; }); 
    volumeslider.addEventListener("mousemove", setVolume); 
}); 
+1

削除 'seekslider.value = event.clientX = seekslider.offsetLeft;' – evolutionxbox

+0

非常に@evolutionxboxを修正していただきありがとうございます。私はそれを受け入れることができるように回答として提出しますか? – Xander

+0

答えとして追加します。 – evolutionxbox

答えて

1

私は次の行を削除し推薦しますそれは次の行としてカウンタ生産的ですmusic.duration * (seekslider.value/100); dあなたが欲しいものを正確にoes。

関連する問題