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