2010-11-08 86 views
1

你能告诉我,为什么这个工程:的JavaScript的setTimeout

PageMethods.UpdateForcedDisposition(forcedDisposition, a.value, SucceededCallback, FailedCallback); 

当这不?

setTimeout("PageMethods.UpdateForcedDisposition(" + forcedDisposition + "," + a.value + ", SucceededCallback, FailedCallback);", 1000); 

有趣的是,类似的电话可与setTimeout

setTimeout("PageMethods.UpdateSales(" + id + ", " + a.value + ", SucceededCallback, FailedCallback);", 1000); 

...我难倒!

回答

6

避免将字符串传递给setTimeout。如果可能的话,使用匿名函数:

window.setTimeout(function() { 
    PageMethods.UpdateForcedDisposition(
     forcedDisposition, 
     a.value, 
     SucceededCallback, 
     FailedCallback 
    ); 
}, 1000); 

一个setTimeout用绳子执行在全球范围内。如果您试图从当前范围引用变量,则会发生错误。