首页 新闻 赞助 找找看

为什么setInterval 只执行了一次??

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-11 17:00

代码如下

<script language=javascript>
    $(function () {
        var test = {
           deg: function (type) {
            alert(type);
              }
          }
         setInterval(test.deg(12), 1000);
      });
</script>

求高手指点

佐梦昊的主页 佐梦昊 | 初学一级 | 园豆:199
提问于:2014-07-03 15:08
< >
分享
最佳答案
4

setInterval(function () { test.deg(12)}, 1000);这样就可以了

佐梦昊 | 初学一级 |园豆:199 | 2014-07-03 16:06
其他回答(8)
0
var test = {
            deg: function (type) {
                console.log(type);
            }
        };
        //test.deg这里传入的函数如果带参数,需要写成如下字符串形式。
        setInterval("test.deg(1)", 1000);

参考

写代码的小2B | 园豆:4371 (老鸟四级) | 2014-07-03 15:43

改了后没有任何效果了

支持(0) 反对(0) 佐梦昊 | 园豆:199 (初学一级) | 2014-07-03 15:50

@MY NEW START: console.log是输入日志,打开浏览器调试工具可以看到。或者你把console.log换成你之前的alert。

支持(0) 反对(0) 写代码的小2B | 园豆:4371 (老鸟四级) | 2014-07-03 15:53

@写代码的小2B: 

var test = {
   deg: function (type) {
       alert(type);
   }
}
setInterval("test.deg(1)", 1000);

还是没有效果

支持(0) 反对(0) 佐梦昊 | 园豆:199 (初学一级) | 2014-07-03 15:56
0

要么用function包裹,要么用字符串方式。或者用new Function("");

幻天芒 | 园豆:37175 (高人七级) | 2014-07-03 16:33
0

setInterval(test.deg(12), 1000);的第一个参数应该是函数吧,你的这个第一个参数不是函数,试着把test.deg(12)用function包起来试试。

收获园豆:1
火悬崖 | 园豆:434 (菜鸟二级) | 2014-07-03 17:49
1

两种方式

1. window.setInterval(function(){test.deg(12)}, 1000);

2. var foo2 = new Function("return test.deg(12)");
         setInterval(foo2, 1000);

 

setInterval 第一个参数是函数引用。

 

收获园豆:2
skpark | 园豆:200 (初学一级) | 2014-07-17 09:18
1

 setInterval(fun, timeout)

参数类型分别是fun:一个函数

timeout:时间。

你传的是空。你可以写为:setInterval(function(){test.deg(12)}, 1000);

乐享程序员 | 园豆:930 (小虾三级) | 2014-08-03 21:15
0

和使用了type这个词有没有关系

xss392795158 | 园豆:206 (菜鸟二级) | 2014-08-07 14:27
0

         setInterval(code,millisec[,"lang"])。code是要执行的代码,你写的setInterval(test.deg(12), 1000)这样是不对的,应该写成setInterval(方法名, 1000),你要明白,方法加上括号都是马上执行的,这点你可以用setTimeout方法证明一下,它并没有延时执行而是马上执行的;你还有个错的地方是,setInterval是周期性的做重复的动作,你传参数的方法不适用setInterval和settimeout。

收获园豆:2
mrbenlearnjs | 园豆:197 (初学一级) | 2014-08-28 15:57
0

<script language=javascript>
    $(function () {
        var test = {
           deg: function (type) {
            alert(type);
              }
          }
         setInterval("test.deg(12)", 1000);
      });
</script>

 

 

*注:传参数时,必须是一个字符串,但这种有一个弊端,不能动态改变参数的值

GisClub | 园豆:330 (菜鸟二级) | 2014-09-10 16:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册