西西河

主题:【原创】在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

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

全看分页树展 · 主题
  • 相关回复 上下关系4


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

Copyright © cchere 西西河