我有一个应用程序与几个js库。在其中的一个中,我为顶部的html5音频定义了一个变量。然后我有一个函数被调用,加载一些html并将其放入div中。该HTML包含一个我想点击播放音频的按钮。然后我使用全局定义的“myaudio”变量加载音频。结构是这样的:Javascript库范围混乱
var myaudio = null;
function loadPage() {
$.ajax({url:'myurl',
success: function(myhtml) {
$('#mydiv').html(myhtml);
... and then later....
if (!editor && audiofile.length) {
var soundfile = "/media/audio/"+thisuid+"/sceneaudio/"+audiofile;
myaudio = new Audio(soundfile).load();
$('#audioButton').css('display','block');
$('#audioButton').click(function() { myaudio.play(); });
}
}
});
}
一切正常,除非当我点击按钮,我得到'myaudio未定义'的错误。我认为这是由于范围问题。当我点击并有效回拨时,myaudio不在通话范围内。这是一个正确的假设吗?我怎样才能解决这个问题?
我试着把jquery点击在函数之外,并使用jquery .on指令,但得到了相同的结果。
谢谢。
我无法让你列出与你所引用的代码相匹配的症状,就可以产生一个完整的,自成体系,最小的例子(例如[SSCCE](http://sscce.org))? –
*“...当我点击按钮时,出现'myaudio undefined'错误,我认为这是由于范围问题。当我点击并有效回拨时,myaudio不在通话范围内。这是一个正确的假设吗?“不,从你引用的代码中,”myaudio“是一个全球性的。 –
定义音频“类”在哪里? .load()函数返回什么?它在你看来像你_think_你正在分配一个新的音频实例,当你真的分配可能是未定义的.load()的返回值。 –