西西河

主题:【原创】在settimeout里实现函数中的参数传递 -- 铁手

共:💬4 🌺12 新:
分页树展主题 · 全看
  • 家园 【原创】在settimeout里实现函数中的参数传递

    举个简单例子,比如在网页编程中,如果在页面中有个 button,点击后,希望这个button的值每1秒钟追加一个 * ,该怎么实现?

    可能会首先想到的是

    <form>

    <input type="button" onclick="ClickButton(this)">

    </form>

    ==

    function ClickButton(Button){

    Button.value+="*"

    setTimeout(ClickButton(Button),1000);

    }

    虽然直观,但是这种参数传递的方式是不行的。因为那个 Button 的值会消失。

    解决的方法,是在 setTimeout 的时候,用一个 function 来包含上面的这个函数。

    function ClickButton(Button){

    Button.value+='.';

    setTimeout(function(){ClickButton(Button);Button=null;},1000);

    }

    Button=null 是为了防止 ie 中可能出现的 memory leak

    另外一种变通办法就是用全局参数,就不用考虑参数传递的问题。

分页树展主题 · 全看


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河