关于JS中setTimeout()无法调用带参函数问题的解决方法


Posted in Javascript onJune 21, 2016

本文实例分析了JS中setTimeout()无法调用带参函数问题的解决方法。分享给大家供大家参考,具体如下:

解决方法:重写setTimeout() 方法,需要用到闭包函数。如下:

var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay){
 if (typeof fRef == 'function') {
  var argu = Array.prototype.slice.call(arguments, 2);
  var f = function(){
    fRef.apply(null, argu);
  };
  return _st(f, mDelay);
 }
 return _st(fRef, mDelay);
}

有了这样的改写,用setTimeout()调用带参函数的时候,就可以用如下的形式:

setTimeout(fun,10,param);

其中,fun 是被函数;10为调用周期,单位是 毫秒;param是fun函数的参数。

另一种更为简单的方法:

function moveing(id,target_x,target_y,t){
 var ele = document.getElementById(id);
 //alert("divObject: "+ele)
 var xpos = parseInt(ele.style.left);
 //alert(ele.style.left)
 var ypos = parseInt(ele.style.top);
 if(xpos < target_x){
 xpos++;
 }
 if(ypos < target_y ){
 ypos++;
 }
 ele.style.left = xpos + "px";
 ele.style.top = ypos + "px";
//被递归调用的函数本身,拼成字符串形式,注意第一个参数的引号
 var repeat ="moveing('"+id+"',"+target_x+","+target_y+","+t+")"; 
 var movment = setTimeout(repeat,t);
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
Angular中$compile源码分析
Jan 28 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
Jun 07 Javascript
非常漂亮的js烟花效果
Mar 10 Javascript
在vue中axios设置timeout超时的操作
Sep 04 Javascript
微信小程序实现页面监听自定义组件的触发事件
Nov 01 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 #Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
Jun 21 #Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 #Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 #Javascript
纯JS前端实现分页代码
Jun 21 #Javascript
jQuery AJAX timeout 超时问题详解
Jun 21 #Javascript
jQuery代码性能优化的10种方法
Jun 21 #Javascript
You might like
PHP 写文本日志实现代码
2010/05/18 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
Yii配置文件用法详解
2014/12/04 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
react中hook介绍以及使用教程
2020/12/11 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python变量和数据类型详解
2017/02/15 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Python正则表达式指南 推荐
2018/10/09 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Pygame框架实现飞机大战
2020/08/07 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
好的演讲稿开场白
2013/12/30 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
大连星海广场导游词
2015/02/10 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
安全生产会议制度
2015/08/06 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python