var oTimer=null;
var fn=function(){
console.log('run fn')
}
oTimer=setTimeout(function(){
fn()
oTimer=setTimeout(arguments.callee,111)
},111)
setTimeout(function(){clearTimeout(oTimer)},1100)我想要实现一个函数 var oTimer=fnSetTimeout(fnName,iDaleyTime)
然后可以通过clearTimeout(oTimer)来清除浮动
如能告知实现思路或者示例代码感激不尽!JavaScript函数

解决方案 »

  1.   

    你只能是封装 内部还是调用 settimeoutfunction fnSetTimeout(fnName,iDaleyTime){
         //....你的业务代码
          return setTimeout(你的业务代码);
    }
      

  2.   

    不知道想干什么,系统有setInterval函数不用,要用setTimeout来模拟,你模拟的还不如系统自带的好用呢
      

  3.   

    setInterval()缺点请参考javascript高级程序设计469页 重复的定时器
      

  4.   

    ;(function() { // var setInterval = window.setInterval;
    var map = {};
    var id = 1;

    window.setInterval = function(fn, interval) {
    var key = 'interval_' + id;
    id++;

    var frame = function() {
    setTimeout(fn, 0);
    map[key] = setTimeout(frame, interval);
    };
    map[key] = setTimeout(frame, interval);

    return key;
    };

    window.clearInterval = function(key) {
    clearTimeout( map[key] );
    };})();
    好了,这样你就把 window 自带的 setInterval 和 clearInterval 给替换掉了
      

  5.   

    setInterval()缺点请参考javascript高级程序设计469页 重复的定时器
    缺点只是你自己的用法逻辑导至,你硬要重复声明setInterval当然重复
    还有不要迷信什么高级权威指南,字典性质的东西,不分受众
    权威指南还说闭包可能导致内存泄露呢,而且也确实有可能,但难道就不能用闭包了?造成泄露了只是你自己水平有限,逻辑不严谨而已,与其去寻找不用闭包的方法,不如把闭包理解好,提升水平。
    同理
    钻研不用setInterval的方法还不如仔细了解一下javascript标准中对setInterval的说明,正确地使用它
      

  6.   

    setInterval()缺点请参考javascript高级程序设计469页 重复的定时器
    缺点只是你自己的用法逻辑导至,你硬要重复声明setInterval当然重复
    还有不要迷信什么高级权威指南,字典性质的东西,不分受众
    权威指南还说闭包可能导致内存泄露呢,而且也确实有可能,但难道就不能用闭包了?造成泄露了只是你自己水平有限,逻辑不严谨而已,与其去寻找不用闭包的方法,不如把闭包理解好,提升水平。
    同理
    钻研不用setInterval的方法还不如仔细了解一下javascript标准中对setInterval的说明,正确地使用它
    我想要一个setTimeout模拟的setInterva方法 结果你给我说直接用setInterval 你想表达什么?
      

  7.   

    setInterval()缺点请参考javascript高级程序设计469页 重复的定时器
    那不叫缺点,只是setInterval()的特性而已,你的定时器重复,那是没有处理好<script type="text/javascript">
    var oTime;
    function myInterval(f,d)
    {
    clearInterval(f.__Interval__);
    return f.__Interval__=setInterval(f,d);
    }
    function run()
    {
    document.getElementById("dd").innerHTML ++;
    }
    </script>
    <span id="dd">1</span>
    <input type="button" value="运行" onclick="oTime=myInterval(run,111)" />
    <input type="button" value="停止" onclick="clearInterval(oTime);" />