|  |      1easyzhao      2017-01-18 14:57:46 +08:00 | 
|      2chuxiaonan      2017-01-18 14:58:01 +08:00 我觉得这个问题, setInterval 可能会更好 :) | 
|  |      3jerray      2017-01-18 14:59:09 +08:00  1 setTimeout(add, 3000) | 
|  |      4greatbody      2017-01-18 15:03:18 +08:00 你这个代码肯定有问题。 效果图和代码肯定不匹配。没有看到你的 console.log | 
|  |      6JoyNeop      2017-01-18 15:21:27 +08:00 函数 add 返回 undefined , setTimeout 要求第一个参数是 function 类型。如果 setTimeout 报错就更容易发现了。 | 
|  |      7ferrum      2017-01-18 15:29:40 +08:00 类似这种需要定时执行的函数里没有异步操作的,就直接使用 setInterval ,简单多了。 另外, V2EX 支持直接贴代码的,用`包裹起来就可以了,比上传到七牛再贴图还是方便点吧。 | 
|  |      8Nutlee      2017-01-18 16:53:23 +08:00 呃 你延迟定时器 传的是 undefined ,并不是函数引用...  猜测这样直接导致原本想延迟 3s 调用的 add() ,立即执行了。 另外,多说一句这代码略啰嗦,你明明缓存了 dom ,为啥操作的时候再查一遍.... | 
|  |      9binjoo      2017-01-18 16:55:43 +08:00 编辑器是什么字体? | 
|  |      10codelegant      2017-01-18 20:13:01 +08:00 via Android 使用命名的函数闭包实现递归。 | 
|      11jun4rui      2017-01-18 20:46:24 +08:00 via Android 你不如记录起始时间,然后每秒更新一次和起始时间的偏移量好了,用系统时钟肯定没什么偏差。 | 
|  |      12wangjialin OP | 
|  |      13dsphper      2017-01-19 12:38:56 +08:00 问题产生的原因是: func 调用栈嵌套太多导致的。你应该用 setInterval 来实现循环定时器功能的,但你选择了用 setTimeout 嵌套执行来实现循环定时器。 解决:用 setInterval 。 | 
|  |      14Nutlee      2017-01-19 13:17:11 +08:00 @wangjialin 你首次进入的网页的时候通过 `document.getElementsByClassName('test')[0]` 取得了 `pTag`,然后在每次 `inc()` 执行的时候又查找了一次 dom 以取得 innerHTML ,可以继续用 pTag 直接取的.... | 
|  |      15wangjialin OP @Nutlee 额 您说的都对 我当时以为内容赋值没成功 所以就重新了哈哈哈 结果问题并不是这儿的 |