找回密码
 注册

[JS] JS setTimeout() 传递参数,setInterval()

php 发表于 2013/1/27 04:05 | 显示全部楼层 |阅读模式
setTimeout()怎么传入带参数的函数?
setTimeout()和setInterval()函数都是定时执行js代码或者函数的函数.
区别在于,setTimeout()只执行一次传入的代码或函数,setInterval()会一直不停地执行传入的js代码或者函数,直到clearInterval()函数被调用,注意clearInterval()函数的参数是setInterval()函数的返回值,setTimeout()要反复执行js代码或者函数,就必须要进行嵌套触发自身运行.
另外还有一个区别,setTimeout()传递的函数不能直接带参数,而setInterval()可以直接传递带参数的函数.
比如,以下代码会执行echo()函数10次,然后停止运行.
  1. <script type="text/javascript">
  2.         var str   = 'www.qSyz.net';
  3.         var times = 1;
  4.         function echo(a){
  5.                 document.write(a + ' ');
  6.                 times++;
  7.                 if(times>10) clearInterval(timer);
  8.         }
  9.         var timer = setInterval("echo(str)",1000);//这里echo函数的参数str可以直接传进来
  10. </script>
复制代码
再看看setTimeout()
  1. <script type="text/javascript">
  2.         var str   = 'www.qSyz.net';
  3.         function echo(a){
  4.                 document.write(a + ' ');
  5.                 setTimeout("echo(a)",1000);//这里echo函数的参数a不能直接带进来
  6.         }
  7.         echo(str);
  8. </script>
复制代码
测试发现无法定时执行echo()函数,因为前面已经说了,setTimeout()函数传入的函数不能直接带参数.
我们需要将代码进行改装,再看
  1. <script type="text/javascript">
  2.         var str   = 'www.qSyz.net';
  3.         function echo(a){
  4.                 document.write(a + ' ');
  5.                 setTimeout("echo('" + a + "')",1000);
  6.         }
  7.         echo(str);
  8. </script>
复制代码
现在测试,发现可以定时执行echo()函数.
另外注意,setTimeout()传入的函数中的参数,如果是字符型变量,必须额外添加引号,如上面代码中的',如果传入的变量是数值型,则可以不加引号,如果传入的是是函数(回调函数),那么必须不加引号.如果传入的是多个变量,可以按上面的方法,把每个变量拆散.

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表