关于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 相关文章推荐
js function定义函数使用心得
Apr 15 Javascript
jquery 注意事项与常用语法小结
Jun 07 Javascript
jQuery ajax cache缓存问题
Jul 01 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
5个JavaScript经典面试题
Oct 13 Javascript
jQuery控制Div拖拽效果完整实例分析
Apr 15 Javascript
javascript实现youku的视频代码自适应宽度
May 25 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
详解如何使用node.js的开发框架express创建一个web应用
Dec 20 Javascript
Vue+Openlayers自定义轨迹动画
Sep 24 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框架的性能
2008/01/10 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
webpack实现热加载自动刷新的方法
2017/07/30 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python编程开发之日期操作实例分析
2015/11/13 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
python else语句在循环中的运用详解
2020/07/06 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
what is the difference between ext2 and ext3
2013/11/03 面试题
前台领班岗位职责
2013/12/04 职场文书
学校安全教育制度
2014/01/31 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
职工宿舍管理制度
2015/08/05 职场文书
四群教育工作总结
2015/08/10 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs