2

ここに私の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 Tag」でスクリプトを開始します。

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

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

スイッチケースでチェックしたので、phpからjsへのデータの受け渡しは問題ありません

alert() を使用しても問題ありませんが、ブロックする .css 表示が機能しない理由がわかりません

アドバイスをください、事前に感謝します

4

1 に答える 1

7

あなたのコード:

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

すぐに関数を呼び出し、その結果をハンドラーcb1()として割り当てようとします。window.onload関数が実行されるためアラートが表示されますが、ドキュメントの head 内からすぐに実行されるため、ドキュメントの本文がまだ解析されていないため、スクリプトは要素を見つけることができません。

実際の関数をハンドラーとして割り当てる必要があります。その関数はオンロードで実行され、その時点で次のように呼び出されますcb1()

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

または、jQuery を使用しているため、関数を呼び出す前に画像が読み込まれるのを待ちたくない場合は、ドキュメント対応ハンドラーを使用します。

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

...または、スクリプトを本文の最後に移動して、関数を直接呼び出します。

<?echo '
<script>cb1("'.$orderType.'");</script>
'?>
于 2013-05-19T12:43:52.373 に答える