为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这样不行

为什么这样,定时器没有作用

function ss()
    {
        var n=document.getElementById("num").innerHTML;
        document.getElementById("num").innerHTML=n--;
        
    }

setInterval(ss,1000);

而这样却有作用

  var n=document.getElementById("num").innerHTML;

function ss()
    {
        document.getElementById("num").innerHTML=n--;
        
    }

setInterval(ss,1000);

正在回答

3 回答

不是,因为如果在函数里面的话,你每次获取到的n都是5,因为你并没有修过n的来源,相当于 b=10 a=b a++ 然后a=11,b还是10的不会变

1 回复 有任何疑惑可以回复我~
#1

唯尔半截湘妃 提问者

非常感谢!
2016-05-24 回复 有任何疑惑可以回复我~

多次调用的同一个函数之间没有联系,一次调用结束后,如果没有嵌套函数页没有其他引用指向这个函数,函数里的变量就被清空了,不会被保存下来的,所以每次调用都是一个新的n

1 回复 有任何疑惑可以回复我~

因为你将n定义在函数中,定时器每次读取函数的 时候n就会重新变为初始值

如果定义在外面,n为全局变量,调用函数的时候不会恢复为初始值

1 回复 有任何疑惑可以回复我~
#1

唯尔半截湘妃 提问者

我觉得都一样啊!比如说第一次获取到5,给它设置成n--,也就是4,那它第二次获取到的不就是4吗?然后再n--
2016-05-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

为什么这样不行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信