关于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.extend函数扩展自己对象的js代码
Dec 09 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
Javascript 按位取反运算符 (~)
Feb 04 Javascript
使用jquery实现以post打开新窗口
Mar 19 Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
Nov 25 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
Angular2生命周期钩子函数的详细介绍
Jul 10 Javascript
three.js加载obj模型的实例代码
Nov 10 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
OpenCV 模板匹配
2019/07/10 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
设计师大码女装:11 Honoré
2020/05/03 全球购物
集团薪酬管理制度
2014/01/13 职场文书
党员民主评议自我评价
2014/10/20 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
Python图片处理之图片裁剪教程
2021/05/27 Python
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers