关于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 日历提醒系统( 兼容所有浏览器 )
Apr 07 Javascript
JavaScript和CSS交互的方法汇总
Dec 02 Javascript
jQuery中even选择器的定义和用法
Dec 23 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
详解js跨域请求的两种方式,支持post请求
May 05 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
基于vue.js组件实现分页效果
Dec 29 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 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工厂模式
2014/11/25 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php实现求相对时间函数
2015/06/15 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
Python笔记(叁)继续学习
2012/10/24 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
详解python中的文件与目录操作
2017/07/11 Python
Python 12306抢火车票脚本
2018/02/07 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
python opencv如何实现图片绘制
2020/01/19 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
高中毕业自我鉴定范文
2013/10/02 职场文书
微博营销计划书
2014/01/10 职场文书
初中校园广播稿
2014/02/02 职场文书
大学生职业生涯规划书参考模板
2014/03/05 职场文书
教师工作态度自我评价
2015/03/05 职场文书
家装电话营销开场白
2015/05/29 职场文书
感恩主题班会教案
2015/08/12 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书