关于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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
学习js在线html(富文本,所见即所得)编辑器
Dec 18 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
Sep 02 Javascript
jquery实现带二级菜单的导航示例
Apr 28 Javascript
jQuery判断元素上是否绑定了指定事件的方法
Mar 17 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
Mar 30 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
微信小程序使用Socket的实例
Sep 19 Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 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中intval()等int转换时的意外异常情况
2013/06/21 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php常用文件操作函数汇总
2014/11/22 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
python 获取图片分辨率的方法
2019/01/08 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
如何写出高性能的JSP和Servlet
2013/01/22 面试题
会计自我鉴定
2013/11/02 职场文书
简历的自荐信
2013/12/19 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书