Javascript 为什么不能在嵌套函数中访问局部范围变量? 您的浏览器不支持音频标记。 (功能(){ var music=document.getElementById('audio'); var submit=document.getElementById('submit'); //1 var mytime=document.getElementById('time')。值*60000; 函数musicStart(){ 音乐。播放(); }; submit.addEventListener('click',function()){ //2,var mytime=document.getElementById('time')。值*60000; 如果(music.paused==true){ 设置超时(musicStart,mytime); //音乐。播放(); }否则{ //time.value=“”; 音乐。暂停(); } }) }());

Javascript 为什么不能在嵌套函数中访问局部范围变量? 您的浏览器不支持音频标记。 (功能(){ var music=document.getElementById('audio'); var submit=document.getElementById('submit'); //1 var mytime=document.getElementById('time')。值*60000; 函数musicStart(){ 音乐。播放(); }; submit.addEventListener('click',function()){ //2,var mytime=document.getElementById('time')。值*60000; 如果(music.paused==true){ 设置超时(musicStart,mytime); //音乐。播放(); }否则{ //time.value=“”; 音乐。暂停(); } }) }());,javascript,Javascript,上面的脚本,当我把代码var mytime=document.getElementById('time').value*60000在1处,它不能工作,但在2处工作 应在嵌套函数中访问mytime变量(在function(){}中定义),该变量在嵌套函数中定义,而嵌套函数是 为什么当我把mytime变量放在1的位置时它不起作用?帮助?尝试在父函数中声明变量,然后在嵌套函数中初始化它: <from> <input type="number" placeholder=

上面的脚本,当我把代码
var mytime=document.getElementById('time').value*60000在1处,它不能工作,但在2处工作

应在嵌套函数中访问
mytime
变量(在
function(){}
中定义),该变量在嵌套函数中定义,而嵌套函数是


为什么当我把mytime变量放在1的位置时它不起作用?帮助?

尝试在父函数中声明变量,然后在嵌套函数中初始化它:

    <from>
    <input type="number" placeholder="time interval" id="time">
    <input type="submit" id="submit" value="start">
    </form>
    <br>
    <br>
    <audio src="p.mp3" controls="controls" id="audio">
     Your browser does not support the audio tag.
    </audio>

    <script type="text/javascript">
        (function(){
             var music = document.getElementById('audio');
             var submit = document.getElementById('submit');
             //1
             var mytime =  document.getElementById('time').value*60000;
             function musicStart(){
                music.play();
             };
             submit.addEventListener('click',function(){

                //2, var mytime=document.getElementById('time').value*60000;

                 if(music.paused === true){
                    setTimeout(musicStart, mytime);
                    //music.play();
                 }else{
                    //time.value ="";
                    music.pause();
                 }
              })
        }());
    </script>

(功能(){
var music=document.getElementById('audio');
var submit=document.getElementById('submit');
var-mytime;
函数musicStart(){music.play();};
submit.addEventListener('click',function()){
mytime=document.getElementById('time')。值*60000;
如果(music.paused==true){
设置超时(musicStart,mytime);
//音乐。播放();
}否则{
//time.value=“”;
音乐。暂停();
}
})
}());

尝试在父函数中声明变量,然后在嵌套函数中初始化它:

    <from>
    <input type="number" placeholder="time interval" id="time">
    <input type="submit" id="submit" value="start">
    </form>
    <br>
    <br>
    <audio src="p.mp3" controls="controls" id="audio">
     Your browser does not support the audio tag.
    </audio>

    <script type="text/javascript">
        (function(){
             var music = document.getElementById('audio');
             var submit = document.getElementById('submit');
             //1
             var mytime =  document.getElementById('time').value*60000;
             function musicStart(){
                music.play();
             };
             submit.addEventListener('click',function(){

                //2, var mytime=document.getElementById('time').value*60000;

                 if(music.paused === true){
                    setTimeout(musicStart, mytime);
                    //music.play();
                 }else{
                    //time.value ="";
                    music.pause();
                 }
              })
        }());
    </script>

(功能(){
var music=document.getElementById('audio');
var submit=document.getElementById('submit');
var-mytime;
函数musicStart(){music.play();};
submit.addEventListener('click',function()){
mytime=document.getElementById('time')。值*60000;
如果(music.paused==true){
设置超时(musicStart,mytime);
//音乐。播放();
}否则{
//time.value=“”;
音乐。暂停();
}
})
}());

加载页面时,它会运行脚本,此时“time”输入为空,因此
mytime
的值将为空


当您将其放置在click事件中时,当您运行click时,它只会获取值,这将为您提供结果。

当您加载页面时,它会运行脚本,此时“time”输入为空,因此
mytime
的值将为空


当您将其放置在click事件中时,当您运行click时,它只会获取值,这将为您提供结果。

当您将其放置在click事件上方时,它会获取时间输入的初始值(为空)。如果你把它放在点击中,它会得到你点击时的输入值非常感谢。我得到它当你把它放在点击事件上面时,它会得到时间输入的初始值(它是空的)。如果你把它放在点击中,它会在你点击的时候得到输入的值。非常感谢。我明白了,
mytime
不需要在这个范围内,这也不能回答操作。正如皮特和乔什·哈林顿所说,这是我第一次加载页面时“时间”输入为空的原因,也谢谢你的解释,谢谢你。首先,我认为我对javascript函数作用域的理解可能有问题,结果证明我错了。
mytime
不需要在该作用域上,这也不符合操作。正如pete和Josh Harington所说,这是我第一次加载页面时空“time”输入的原因,谢谢你的解释,谢谢。首先,我想我对javascript函数作用域的理解可能有问题,结果我错了。非常感谢。非常好的解释。非常好的解释