Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 停止播放新音频_Javascript_Html - Fatal编程技术网

Javascript 停止播放新音频

Javascript 停止播放新音频,javascript,html,Javascript,Html,我想一次只播放一个音频,以响应某些鼠标事件。情况是在不同HTML元素上的onmouse over事件播放音频。当用户将鼠标从一个元素快速移动到另一个元素,并且两个元素都播放音频时,会产生噪音。在播放新音频之前,我想检查是否正在播放任何音频。我使用了以下代码: var $audioAnno=0; function audioAnnotation(y){ var audio; if ($audioAnno==0){ $audioAnno=1; aud

我想一次只播放一个音频,以响应某些鼠标事件。情况是在不同HTML元素上的onmouse over事件播放音频。当用户将鼠标从一个元素快速移动到另一个元素,并且两个元素都播放音频时,会产生噪音。在播放新音频之前,我想检查是否正在播放任何音频。我使用了以下代码:

var $audioAnno=0;
function audioAnnotation(y){
    var audio; 
    if ($audioAnno==0){
        $audioAnno=1;
        audio = new Audio(y);
        audio.play();
        $audioAnno=0;
    }
}
var $audioAnno=0;
function audioAnnotation(x, y){
    var audio = new Audio(y);
    if ($audioAnno==0){
        $audioAnno = 1;
        audio.play();
        audio.addEventListener("ended", function(){ $audioAnno = 0; });
    }
}

它不会停止播放第二个音频。

我会这样做,保持一个标志canPlay和on mouse事件,如果为true,则播放

canPlay = true;
var es = document.getElementsByTagName('audio'), audios=[];
for(var i=0;i<es.length;i++)    audios.push(es[i]);
audios.forEach(function(e){
    e.addEventListener('play', function(){
        canPlay= false;
    });

    e.addEventListener('ended', function(){
        canPlay= true;
    });
});

// later on some mouseEvent based on some condition

function onMouseEvent(audioElement){
    if(canPlay){
        audioElement.play();
    }
};
谢谢大家

我可以解决这个问题。我使用了以下代码:

var $audioAnno=0;
function audioAnnotation(y){
    var audio; 
    if ($audioAnno==0){
        $audioAnno=1;
        audio = new Audio(y);
        audio.play();
        $audioAnno=0;
    }
}
var $audioAnno=0;
function audioAnnotation(x, y){
    var audio = new Audio(y);
    if ($audioAnno==0){
        $audioAnno = 1;
        audio.play();
        audio.addEventListener("ended", function(){ $audioAnno = 0; });
    }
}

感谢莫迪的快速回复。我偶尔是一名JavaScript开发人员。所以不是很熟悉所有的功能。我正在使用JavaScript音频对象。我没有使用HTML音频标签。在这种情况下,我如何应用你的概念。