关于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面向对象之静态与非静态类
Feb 03 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
jqGrid中文文档之选项设置
Dec 02 Javascript
jquery操作select元素和option的实例代码
Feb 03 Javascript
javascript HTML+CSS实现经典橙色导航菜单
Feb 16 Javascript
bootstrap表格分页实例讲解
Dec 30 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
Mar 16 Javascript
vue设置动态请求地址的例子
Nov 01 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教程孙仲岳主讲
2008/01/07 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
浅谈Node 调试工具入门教程
2018/03/20 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
python查询mysql中文乱码问题
2014/11/09 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
python追加元素到列表的方法
2015/07/28 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
pandas 将索引值相加的方法
2018/11/15 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
python从Oracle读取数据生成图表
2020/10/14 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
工作室成员个人发展规划范文
2014/01/24 职场文书
《草原》教学反思
2014/02/15 职场文书
学习2014年全国两会心得体会
2014/03/12 职场文书
假面舞会策划方案
2014/05/29 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
个人更名证明
2015/06/23 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Python采集壁纸并实现炫轮播
2022/04/30 Python