关于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 相关文章推荐
使用Javascript接收get传递的值的代码
Nov 30 Javascript
JavaScript起点(严格模式深度了解)
Jan 28 Javascript
有关javascript的性能优化 (repaint和reflow)
Apr 12 Javascript
jquery自动填充勾选框即把勾选框打上true
Mar 24 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
浅谈js构造函数的方法与原型prototype
Jul 04 Javascript
js实现常见的工具条效果
Mar 02 Javascript
bootstrap轮播图示例代码分享
May 17 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 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 数组的指针操作实现代码
2011/02/08 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
JS验证不重复验证码
2017/02/10 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
Python中datetime常用时间处理方法
2015/06/15 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python实现接口并发测试脚本
2019/06/25 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
python如何进行矩阵运算
2020/06/05 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
Weblogic的布署方式
2013/08/23 面试题
红旗方阵解说词
2014/02/12 职场文书
部队党性分析材料
2014/02/16 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
应届毕业生自荐信例文
2014/02/26 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
2014年统战工作总结
2014/12/09 职场文书
考研导师推荐信范文
2015/03/27 职场文书
图文详解nginx日志切割的实现
2022/01/18 Servers