关于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 放大镜 移动镜片效果代码
May 09 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
判断文件是否正在被使用的JS代码
Dec 21 Javascript
Jquery焦点图实例代码
Nov 25 Javascript
JavaScript中使用Object.create()创建对象介绍
Dec 30 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
input点击后placeholder中的提示消息消失
Jan 15 Javascript
20分钟轻松创建自己的Bootstrap站点
May 12 Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 Javascript
js css自定义分页效果
Feb 24 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
Apr 30 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
解析百度搜索结果link?url=参数分析 (全)
2012/10/09 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
smarty缓存用法分析
2014/12/16 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
Javascript 汉字字节判断
2009/08/01 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
关于JavaScript语句后面的分号问题
2017/12/07 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
小学生红领巾广播稿
2014/01/21 职场文书
四年级数学教学反思
2014/02/02 职场文书
生产文员岗位职责
2014/04/05 职场文书
运动员获奖感言
2014/08/15 职场文书
委托书范本
2014/09/13 职场文书
音乐课外活动总结
2015/05/09 职场文书
新闻稿件写作范文
2015/07/18 职场文书