Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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_Function_Audio_Mp3 - Fatal编程技术网

Javascript音频不会同时停止和播放多个曲目

Javascript音频不会同时停止和播放多个曲目,javascript,html,function,audio,mp3,Javascript,Html,Function,Audio,Mp3,Javascript音频不会同时停止和播放多个曲目 我正在尝试随机洗牌MP3/WAV曲目的数量,它工作得很好,直到它假设停止最后一个曲目,所以之前的曲目之间有一个实时合并,显然听起来像是一团糟 我打赌这是一个小小的调整来解决这个问题,但是…:) 无论如何,这是我的代码: <!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>&nbsp;</tit

Javascript音频不会同时停止和播放多个曲目

我正在尝试随机洗牌MP3/WAV曲目的数量,它工作得很好,直到它假设停止最后一个曲目,所以之前的曲目之间有一个实时合并,显然听起来像是一团糟

我打赌这是一个小小的调整来解决这个问题,但是…:)

无论如何,这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset=utf-8>
    <title>&nbsp;</title>
</head>
<body>

提前感谢您的帮助:D

var t=setInterval(函数(){myTimer()},3000);
var文件=
[
"赫孜甘纳#1.mp3",,
"赫孜甘尼娜#2.mp3",,
"赫孜甘纳#3.mp3",,
"赫孜甘尼娜#4.mp3"
];
函数myTimer()
{
中频(音频)
{
audio.pause();
音频.currentTime=0;
删除音频;
}
var i=Math.floor(Math.random()*files.length);
var url=文件[i];
var audio=新音频(url);
音频播放();
document.title=url.replace(/\.[^/]+$/,'');
}

问题在于间隔的回调函数
myTimer()

我们来看看,

if(audio)
{
    audio.pause();
    audio.currentTime=0;
    delete audio;
}
上面,您正在检查变量
audio
是否存在,但这种情况永远不会成立。为什么?它是在该检查之后定义的,并且是在回调函数的本地范围内定义的:

var audio=new Audio(url);
audio.play();
因此,在每次调用myTimer时都会重新定义局部变量,并且只在该函数中“存在”

要解决此问题,您需要将音频设置为一个全局变量,并修改if检查,如下所示:

if(audio != null)
这将确保它不会在第一次尝试停止音频

这是您修改过的代码:

var audio=null;
var t=setInterval(function(){myTimer()},3000);
var files=
[
    'Hezi-Gangina#1.mp3',
    'Hezi-Gangina#2.mp3',
    'Hezi-Gangina#3.mp3',
    'Hezi-Gangina#4.mp3'
];

function myTimer()
{
    if(audio != null)
    {
        audio.pause();
        audio.currentTime=0;
        delete audio;
    }

    var i=Math.floor(Math.random()*files.length);
    var url=files[i];

    audio=new Audio(url);
    audio.play();
}
var audio=null;
var t=setInterval(function(){myTimer()},3000);
var files=
[
    'Hezi-Gangina#1.mp3',
    'Hezi-Gangina#2.mp3',
    'Hezi-Gangina#3.mp3',
    'Hezi-Gangina#4.mp3'
];

function myTimer()
{
    if(audio != null)
    {
        audio.pause();
        audio.currentTime=0;
        delete audio;
    }

    var i=Math.floor(Math.random()*files.length);
    var url=files[i];

    audio=new Audio(url);
    audio.play();
}