setInterval,setTimeout的用法

自定义一个函数:

  
    
1 function myFunc(){
2 // do somthing;
3   }
4
5   function myFunc2(data){
6 do something;
7 }

调用第一个函数这三种写法:

setInterval(myFunc,1000);

setInterval("myFunc()",1000);

第三种是匿名函数,也就是说不要自定义了:setInterval(function(){...;},1000);

 

而调用第二个函数显然第一种调用法就失效了,因为没法送参数,除非你把参数都默认了,不然只有在调用的时候把参数送进去:

setInterval("myfunc2('aaa')",1000);

假如参数是一个元素/对象的话呢?以jQuery为例:

setInterval("myfunc2($('#txtmsg'))",1000);

原生js当然一样:

setInterval("myFunc2(getElementById('txtmsg'))",1000);

 

====补充

经反复实验,如下用法均可行:

代码
   
     
1 < script type = " text/javascript " >
2 var a = " 3 " ,b = " 4 " , c;
3 onload = function (){c = document.getElementById( ' t1 ' ).value;}
4 function getc(){ return document.getElementById( ' t1 ' ).value;}
5 function test(a,b){alert(a + b);}
6 function test2(a){alert(a.value);}
7 // setTimeout(test(a,b),1000);
8   // setTimeout(test(3,"4"),1000);
9   // setTimeout("test(a,b)",1000);
10 // setTimeout("test(document.getElementById('t1').value,2)",1000);
11 // setTimeout(test(document.getElementById('t1').value,2),1000);//错误
12 // setTimeout("test(c,b)",1000);
13 // setTimeout(test(c,b),1000);//提示C未定义
14 // setTimeout(test(getc(),b),1000);//错误
15 // setTimeout("test(getc(),b)",1000);
16 // setTimeout("test2(document.getElementById('t1'))",1000);
17 // setTimeout(test2(document.getElementById('t1')),1000);//错误
18 < / script>
可见,带了参数的调用方法很是灵活,而且用引号传递的话,会比直接传递函数对象适用范围广很多,

上例中,凡是出错的地方,全在传递对象的时候

你可能感兴趣的:(SetInterval)