无法使用.css将显示从none更改为block

时间:2013-05-19 12:34:24

标签: php javascript jquery

这是我的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>

在“标题”中启动脚本:

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

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

将数据从php传递到js是可以的,因为我已经检查了交换机

with alert()没关系,但我不知道为什么.css显示阻止不起作用

请建议,提前谢谢

1 个答案:

答案 0 :(得分:7)

您的代码:

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

将立即调用cb1()函数并尝试将其结果指定为window.onload处理程序。您看到警报,因为该函数确实运行,但由于它从文档头部内部立即运行,因此文档正文尚未被解析,因此脚本无法找到您的元素。

你需要指定一个实际的函数作为处理程序,该函数将在onload上运行,此时将调用cb1()

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

或者,既然您正在使用jQuery,并且假设您在调用函数之前不想等待图像加载,请使用文档就绪处理程序:

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

...或将脚本移动到正文的末尾并直接调用您的函数:

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