2013-05-19 19 views
2

這裏是我的CSS:無法使用的CSS從沒有更改顯示,以阻止

#optionHotel{ 
    display:none; 
} 

這裏是我的JavaScript:

function cb1(type){ 
    switch(type){ 
     case "hotel": 
      alert("hotel"); 
      $("#optionHotel").css("display","block"); 
      break; 
    } 
} 

這裏是我的HTML:

<div id="optionHotel"> Some Element In here</div> 

啓動腳本中的 'head標籤':

<?echo ' 
<script>window.onload = cb1("'.$orderType.'");</script> 
'?> 

<!--CSS--> 
<link href="../../css/navigate.css" rel="stylesheet"/> 
<link href="../../css/reservation.css" rel="stylesheet"/> 

從PHP將數據傳遞給JS就可以了,因爲我已經檢查在switchcase

與警報()是好,但我不知道爲什麼的.css顯示器塊不起作用

請諮詢,提前感謝

+2

這是因爲DOM還沒有準備好,你會立即調用該函數之前,即你的元素添加到DOM。 'window.onload = function(){cb1(「orderType」)}' – undefined

+0

$(「#optionHotel」)。hide(); –

回答

7

您的代碼:

<script>window.onload = cb1("'.$orderType.'");</script> 

會立即撥打cb1()功能,並嘗試將其結果作爲分配的window.onload處理。您會看到警報,因爲該函數確實運行,但由於它從文檔頭部立即運行,因此文檔主體尚未解析,因此腳本無法找到您的元素。

您需要分配的實際功能作爲處理器,其中該函數將有載運行,並在這一點上會調用cb1()

<script>window.onload = function() { cb1("'.$orderType.'"); };</script> 

或者,因爲你正在使用jQuery,並假設你不不想等待圖像調用你的函數之前加載,使用文檔準備處理程序:

<?echo ' 
<script> 
    $(document).ready(function() { 
    cb1("'.$orderType.'"); 
    }); 
</script> 
'?> 

...或移動腳本到身體的末端,直接調用你的函數:

<?echo ' 
<script>cb1("'.$orderType.'");</script> 
'?> 
相關問題