關(guān)于JS中setTimeout()無法調(diào)用帶參函數(shù)問題的解決方法
本文實(shí)例分析了JS中setTimeout()無法調(diào)用帶參函數(shù)問題的解決方法。分享給大家供大家參考,具體如下:
解決方法:重寫setTimeout() 方法,需要用到閉包函數(shù)。如下:
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()調(diào)用帶參函數(shù)的時(shí)候,就可以用如下的形式:
setTimeout(fun,10,param);
其中,fun 是被函數(shù);10為調(diào)用周期,單位是 毫秒;param是fun函數(shù)的參數(shù)。
另一種更為簡(jiǎn)單的方法:
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"; //被遞歸調(diào)用的函數(shù)本身,拼成字符串形式,注意第一個(gè)參數(shù)的引號(hào) var repeat ="moveing('"+id+"',"+target_x+","+target_y+","+t+")"; var movment = setTimeout(repeat,t); }
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript setTimeout()基本用法有哪些
- JavaScript setInterval()與setTimeout()計(jì)時(shí)器
- JavaScript定時(shí)器setTimeout()和setInterval()詳解
- 實(shí)例講解JS中setTimeout()的用法
- js中setTimeout()與clearTimeout()用法實(shí)例淺析
- Javascript的setTimeout()使用閉包特性時(shí)需要注意的問題
- js setTimeout()函數(shù)介紹及應(yīng)用以倒計(jì)時(shí)為例
- javascript的setTimeout()使用方法總結(jié)
相關(guān)文章
關(guān)于JS Lodop打印插件打印Bootstrap樣式錯(cuò)亂問題的解決方案
關(guān)于Lodop打印是個(gè)很牛逼的打印插件,但是打印Bootstrap的樣式的時(shí)候就容易錯(cuò)亂,下面通過本文給大家分享下這方面的問題2016-12-12JavaScript創(chuàng)建閉包的兩種方式的優(yōu)劣與區(qū)別分析
這篇文章主要介紹了JavaScript創(chuàng)建閉包的兩種方式的優(yōu)劣與區(qū)別分析的相關(guān)資料,需要的朋友可以參考下2015-06-06javascript中如何處理引號(hào)編碼"
本文為大家介紹下javascript中如何處理引號(hào)編碼,具體如下,感興趣的朋友可以參考下2013-08-08Swiper如何實(shí)現(xiàn)兩行四列輪播圖效果實(shí)例
大家應(yīng)該都知道,Swiper是純javascript打造的滑動(dòng)特效插件,面向手機(jī)、平板電腦等移動(dòng)終端,下面這篇文章主要給大家介紹了關(guān)于Swiper如何實(shí)現(xiàn)兩行四列輪播圖效果的相關(guān)資料,需要的朋友可以參考下2022-10-10