2010-09-13 58 views
2

setTimeout和匿名函数为什么这并不在Firebug控制台工作:问题在JavaScript中

function(s,e) { 
setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
} 

虽然这确实:

setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 

回答

6

它不起作用,因为你不调用其他匿名函数来包装你的setTimeout,它是如何实际调用的?

你必须要么名字,并把它叫做:

function someFunc(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
} 
someFunc(); 

或者在括号包裹,并立即把它

(function(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
})(); 

或名称,并调用它的文档加载:

JS

function someFunc(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
} 

HTML

<body onload='someFunc'> 
.... 
2

因为你不是要求在第一功能例。你需要调用这个函数,你可以这样做。该函数的括号用于防止语法错误:函数表达式(这是您的示例)独立不是一个有效的语句。最后的括号称为函数。

(function(s,e) { 
    setTimeout(function(){grvClosingDocs.Refresh();CBPDocFlow.PerformCallback();},100) 
})();