关于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 相关文章推荐
JQuery this 和 $(this) 的区别
Aug 23 Javascript
基于jquery的超简单上下翻
Apr 20 Javascript
浅谈JavaScript中的字符编码转换问题
Jul 07 Javascript
jQuery获取checkboxlist的value值的方法
Sep 27 Javascript
如何使用jquery easyui创建标签组件
Nov 18 Javascript
使用ionic切换页面卡顿的解决方法
Dec 16 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
Mar 04 Javascript
JavaScript模块化之使用requireJS按需加载
Apr 12 Javascript
Node.js 的模块知识汇总
Aug 16 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
Nov 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
PHP中extract()函数的妙用分析
2012/07/11 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
php调用shell的方法
2014/11/05 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
Python列表推导式的使用方法
2013/11/21 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
python网络编程之文件下载实例分析
2015/05/20 Python
用python制作游戏外挂
2018/01/04 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
python关于变量名的基础知识点
2020/03/03 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Python tkinter实现日期选择器
2021/02/22 Python
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
美丽乡村建设实施方案
2014/03/23 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
自荐信格式范文
2015/03/04 职场文书
2015年团支书工作总结
2015/04/03 职场文书
浅谈MySQL函数
2021/10/05 MySQL
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript