2013-11-26 34 views
2

我得到這個錯誤在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); 
} 

]可以通過方式缺少有..,在鉻我得到這個錯誤:

Uncaught SyntaxError: Unexpected identifier 
+1

更好'的setTimeout(函數(){ $( '#上傳持有者')隱藏() },我* 300);' – Praveen

+0

是的,我做到了,這是好的,謝謝:) – Bardelman

+0

很高興聽到,它幫助:) – Praveen

回答

7

setTimeout需要一個函數或一串代碼作爲第一個參數。您正在傳遞此表達式的評估結果:

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

此表達式既不返回字符串也不返回函數。它返回一個jQuery集合。

你想:

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

你有一個奇怪的一套代碼出現,不過,給一個定時器和循環的組合。一旦這個錯誤得到解決,我會期待一些奇怪的東西來自它。例如,i不會是你在很多的這些內部函數的執行會發生什麼......

+0

或者他可以簡單地執行'setTimeout($('#uploaded-holder')。hide,i * 300);' –

+0

@AlexW我沒有測試過它,但我相信這會導致範圍確定在jQuery收集實例中使用'this'出現問題 – JAAulde

+0

Chrome https://stackoverflow.com/a/31502293 – user423430

1

您可以嘗試使用此: -

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

代替

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

作爲setTimeout需要字符串或作爲第一個參數的函數。

0

你也可以試試這個,這也適用

的setTimeout(」 $('#uploaded-持有人')。hide()「,i * 300);

在雙引號內添加第一個參數。

相關問題