在元素列表[object Object]之后的SyntaxError:missing]

时间:2013-11-26 13:44:01

标签: javascript

我在firebug中遇到了这个错误:

     SyntaxError: missing ] after element list

    [object Object]

以下javascript代码:

for ( var i = 0; i < 4; i++ ) {
    setTimeout( function(){
        closeBtn( i,'.lt400' );
        // the error exactly happened in next line:
        setTimeout($('#uploaded-holder').hide(), i * 300 );
    }, i * 300 ); 
}

我不知道如何在那里失踪..顺便说一句,在Chrome中我得到了这个错误:

Uncaught SyntaxError: Unexpected identifier

3 个答案:

答案 0 :(得分:7)

setTimeout期望一个函数或一串代码作为第一个参数。您正在传递此表达式的评估结果:

$('#uploaded-holder').hide()

此表达式既不返回字符串,也不返回函数。它返回一个jQuery集合。

你想:

setTimeout(function () {
    $('#uploaded-holder').hide();
}, i * 300 );

但是,由于setTimeouts和循环的组合,你有一组奇怪的代码。一旦这个错误得到解决,我预计会有一些奇怪的怪异。例如,i不会出现在执行许多内部函数时的预期......

答案 1 :(得分:1)

你可以尝试使用它: -

setTimeout( function () 
{ $('#uploaded-holder').hide() }, i * 300 );

而不是

setTimeout($('#uploaded-holder').hide(), i * 300 );

因为setTimeout需要字符串或函数作为第一个参数。

答案 2 :(得分:0)

您也可以试试这个,这也有效

setTimeout(&#34; $(&#39;#uploaded-holder&#39;)。hide()&#34;,i * 300);

在双引号中添加第一个参数。