2011-09-15 113 views
0

我得到這個JavaScript錯誤:「塊沒有定義」爲什麼我得到這個錯誤「塊沒有定義」?

<script type="text/javascript"> 
$(document).ready(function() 
{ 
    $(".register_now").click(function() 
    { 

    $(".fp_top_right_login").slideToggle(600); 
    var st = document.getElementById("fp_top_right_register").style.display; 
    if(st == "" || st == "none") 
    { 
     window.setTimeout(document.getElementById("fp_top_right_register").style.display="block",600); //error happens here 
    } 
    else 
    { 
     window.setTimeout(document.getElementById("fp_top_right_register").style.display="none",600); //and also here 
    } 
    }); 
}); 
</script>
+1

你能做出的jsfiddle的問題的測試用例? – Exelian

+0

所以沒有人問你爲什麼在jQuery選擇器旁邊使用「getElementById」?改用'$('#foo')'! –

+0

爲什麼使用'document.getElementById(「fp_top_right_register」).style.display =「block」'當你使用jQuery呢? '$(「#fp_top_right_register」).show()'沒有更快,但它更短,更容易閱讀。 – Blazemonger

回答

7

setTimeout接受一個函數作爲參數。您可以使用匿名功能。例如:

window.setTimeout(function() { 
    document.getElementById("fp_top_right_register").style.display="block"; 
}, 600); 
+0

'setTimeout'也可以將字符串字面量當作要執行的代碼,但是您應該*永遠不要執行此操作*。使用函數總是更好的選擇。 – thedaian

+0

這個修好了,謝謝。 – AllisonC

0

的第一個參數window.setTimeout應該是一個函數,而不是一個字符串,它是你的任務的結果。

你可能想包裝在

function() { .... } 
3

即分配有一個在你使用的setTimeout的方式錯誤。

window.setTimeout(function(){document.getElementById("fp_top_right_register").style.display="block"},600); 

而且,考慮使用jquery css

$('#fp_top_right_register').css('display','block'); 
+0

jquery css建議+1 – andy

相關問題