关于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中toFixed()方法引起的问题如何解决
Nov 20 Javascript
web css实现整站样式互相切换
Oct 29 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
jquery背景跟随鼠标滑动导航
Nov 20 Javascript
三种Node.js写文件的方式
Mar 08 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
vue中实现在外部调用methods的方法(推荐)
Feb 08 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
微信小程序实现商品属性联动选择
Feb 15 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 和 MySQL 基础教程(二)
2006/10/09 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
python fabric使用笔记
2015/05/09 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
函授本科自我鉴定
2013/11/03 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
求职信怎么写范文
2014/05/26 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
贫困证明书范文
2015/06/16 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书