关于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 当前日期加(天、周、月、年)
Aug 09 Javascript
javascript document.compatMode兼容性
Feb 23 Javascript
kmock javascript 单元测试代码
Feb 06 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
JS实现清除指定cookies的方法
Sep 20 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
Mar 03 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 Javascript
JavaScript原型继承_动力节点Java学院整理
Jun 30 Javascript
Angular设置别名alias的方法
Nov 08 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
Vue关于组件化开发知识点详解
May 13 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文件怎么打开 如何执行php文件
2011/12/21 PHP
JavaScript的类型转换(字符转数字 数字转字符)
2010/08/30 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
vue ssr 指南详读
2018/06/29 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
python基础教程之udp端口扫描
2014/02/10 Python
TensorFlow实现创建分类器
2018/02/06 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
2020/03/06 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
蓝颜请假条
2014/04/11 职场文书
建筑结构施工求职信
2014/07/11 职场文书
乡镇党建工作汇报材料
2014/08/14 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers