为什么不能在嵌套函数中访问局部范围变量
why cannot the local scope variable be visited in the nested function?
<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 mytime = document.getElementById('time').value*60000;
放在 1 位时,它不能运行,只能在 2 位运行?
mytime
变量(在function(){}
中定义(应该在嵌套函数(在嵌套函数中定义(中访问。
为什么当我将 mytime 变量放在 1 位时它不起作用?帮助?
加载页面时,它会运行脚本,此时"time"输入为空,因此mytime
的值将为空。
当您将其放入单击事件中时,当您运行单击时,它只会获取值,从而为您提供结果。
尝试在父函数中声明变量,然后在嵌套函数中初始化它:
<script type="text/javascript">
(function(){
var music = document.getElementById('audio');
var submit = document.getElementById('submit');
var mytime;
function musicStart(){ music.play(); };
submit.addEventListener('click',function(){
mytime=document.getElementById('time').value*60000;
if(music.paused === true){
setTimeout(musicStart, mytime);
//music.play();
}else{
//time.value ="";
music.pause();
}
})
}());
</script>
相关文章:
- 是否有任何方法可以访问外部范围's变量
- 角度嵌入和访问控制器范围
- 无法访问父范围内的属性,但是我可以通过该属性链查看
- 访问函数范围之外的变量时出现问题
- 如何从 ng-repeat(ng-repeat)中的指令访问控制器范围
- 角度访问模块范围从工厂
- 如何从父指令/控制器访问指令范围
- 用于访问父范围的控制器层次结构异常:AngularJS
- AngularJS :如何从相同的指令控制器访问指令范围
- JavaScript 访问 Angular 范围返回“未定义” - 异步问题
- 如果需要,如何访问父范围
- 访问“父范围”
- ng-repeat指令中的角度选择:如何访问子范围
- 从全局定义的函数访问函数范围链
- JavaScript:闭包是否可以通过值访问封闭范围中的变量,而不是像PHP中那样通过引用访问
- 为什么不能在嵌套函数中访问局部范围变量
- 访问全局范围中的JS函数
- 访问函数范围内的本地eval
- 什么会阻止从浏览器控制台访问AngularJS$范围
- 访问AngularJS$范围中的Play Scala变量