2011-09-15 80 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

相关问题