0

正如标题所述,我在 javascript 中遇到了一个奇怪的错误。在我的 php 中,我正在回显将 jquery 弹出警报框呈现到屏幕上的 javascript。

echo '<link rel="stylesheet"   
href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"/>
                <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
                <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
                <link rel="stylesheet" href="/resources/demos/style.css" />
                <script src="../functions.js"></script>
                <script type="text/javascript"> JQueryAlert("HELLO!", 120);</script>';

函数.js

     function JQueryAlert(message,windowHeight){
    if (!windowHeight) var windowHeight = 470;

    $("#msgdialog").remove();

    $("body").append("<div id=\'msgdialog\'></div>"); 

    thatmsg = $("#msgdialog");

    $("#msgdialog").dialog({
        resizable: false,
        draggable: false,
        width: 770,
        height: windowHeight,
        context: thatmsg,
        modal: true,
        autoOpen: false,
        buttons: {
            "Cancel" : function (){
                thatmsg.dialog("close");
            },
            "OK" : function (){
                loadPage("combat.php");
            }
        }
    });     

    $("#msgdialog").html(message);
    $("#msgdialog").dialog(\'open\');
}

但是,它有时只显示弹出警告框。其余时间屏幕只是闪烁并且不显示弹出框。任何想法为什么它会这样?谢谢你的时间。

4

2 回答 2

0

您可以尝试在文档就绪事件处理程序中调用您的函数吗?

像这样的东西:

<script>
  $(function() {
    JQueryAlert("HELLO!", 120);
  });
</script>

我的猜测是,由于您在函数中访问 DOM,因此有时在您的代码执行之前 DOM 并未完全加载......

于 2013-05-15T14:12:22.280 回答
0

这不是错误……
在页面元素实际呈现到位之前,您无法对其进行操作。
而不是 JQueryAlert("HELLO!", 120);

利用

$( document ).ready(function() {
    JQueryAlert("HELLO!", 120);
}

当文件准备好时,它将显示您的警报

于 2013-05-15T14:14:51.210 回答