Javascript:can';不能播放wav文件

Javascript:can';不能播放wav文件,javascript,audio,Javascript,Audio,基于StackExchange的代码,我编写了打开wav文件的代码。wav文件本身是一个有效的文件,因为它可以正确地与我的Python程序配合使用。但是javascript函数不起作用。声音文件与我的html文件位于同一文件夹中 游戏桌 暂停表 退出表 var音频; 函数setupAudio(){ var audio=新音频('plus1_071016_Alex.WAV'); } 函数playAudio(){ 音频播放(); } 函数pauseAudio(){ audio.pa

基于StackExchange的代码,我编写了打开wav文件的代码。wav文件本身是一个有效的文件,因为它可以正确地与我的Python程序配合使用。但是javascript函数不起作用。声音文件与我的html文件位于同一文件夹中


游戏桌
暂停表
退出表


var音频;
函数setupAudio(){
var audio=新音频('plus1_071016_Alex.WAV');
}
函数playAudio(){
音频播放();
}   
函数pauseAudio(){
audio.pause();
}
函数cancelAudio(){
audio.pause();
sound.currentTime=0;
}

任何帮助都将不胜感激。

您没有入门点。。。什么是调用setupAudio()?这会让你振作起来


试验
//var audio=新音频(“plus1_071016_Alex.WAV”);
//var audio=新音频(“http://glpjt.s3.amazonaws.com/so/av/a12.mp3");                 
var audio=新音频(“https://s3.amazonaws.com/audio-experiments/examples/elon_mono.wav");
函数playAudio(){
音频播放();
}   
函数pauseAudio(){
audio.pause();
}
函数cancelAudio(){
audio.pause();
audio.currentTime=0;
}
播放/恢复表
暂停表
退出表

查看您脚本的第一行:

var audio;

function setupAudio(){
    var audio = new Audio('plus1_071016_Alex.WAV');
}
您正在将具有相同名称的变量的全局变量audio屏蔽到setupAudio函数中。这样,辅助功能playAudio、pauseAudio和cancelAudio将无法访问音频对象。我假设在代码中的某个地方,而不是示例中显示的地方,您将调用setupAudio函数

一个快速而真实的解决方案:将var关键字删除到函数中,瞧:您污染了您的全局环境,但您的代码应该可以工作

我将使用一个简单的模块模式,遵循稍微不同的路线:

css 我更喜欢将样式放在头部远离元素标记的地方:它们会分散我的注意力

<style>
    #play_or_pause_or_exit > button { display: inline-block; }
</style>
PlayerNow是一个IIFE(立即调用的函数表达式),它创建一个对象,用play、pause和stop方法封装音频资源,以控制资源

请注意,音频url现在位于声明的底部,一旦定义了生成函数,它就会被加载,正如您可能从函数表达式名称猜到的那样


全球环境仍然受到污染,但仅仅是一个封装了辅助功能和资源的对象。单点访问vs四个函数和一个资源变量。

您有链接吗?由于
setupAudio
函数中的
var
关键字,此AudioElement将仅在此函数的范围内声明,然后任何人都无法访问。如果要填充全局
audio
变量,请删除此关键字。谢谢。当我修复我的代码时,它仍然不起作用。我需要做的是将我的wav文件转换成mpg文件,所有的工作都正常。
var audio;

function setupAudio(){
    var audio = new Audio('plus1_071016_Alex.WAV');
}
<style>
    #play_or_pause_or_exit > button { display: inline-block; }
</style>
<div id="play_or_pause_or_exit">    
    <button onclick="Player.play()" 
            type="button" 
            id="play"
            disabled>Play/Resume table</button>
    <button onclick="Player.pause()" 
            type="button"
            id="pause"
            disabled>Pause table</button> 
    <button onclick="Player.stop()" 
            type="button"
            id="cancel"
            disabled>Exit tables</button> 
</div>
var Player = (function (audiourl) {

    var audio = new Audio(audiourl);

    [].forEach.call(
        document.querySelectorAll("#play_or_pause_or_exit > button"),
        function(x) {
            x.disabled=false;
        });

    return {
        "play": function() { audio.play(); },   
        "pause": function() { audio.pause(); },
        "stop": function() {
            audio.pause();
            audio.currentTime = 0;
        },
    };
})("plus1_071016_Alex.WAV");