簡體   English   中英

自定義JS函數未定義問題

[英]Custom JS function is not defined issue

我在search.js文件中有一個稱為ShwoDialog() js函數。 當我運行我的應用程序時,我收到了Firefox的錯誤消息ReferenceError: ShwoDialog is not defined

我雖然可能是在加載定義了功能的名為search.js的js文件之前調用了函數ShwoDialog() 所以我看到了html源,發現在search.js文件加載后ShwoDialog()正在調用。

這是我的資料的一小部分

<script type="text/javascript" src="/Scripts/BlockUI.js"></script>
<script type="text/javascript" src="/Scripts/jquery.ba-bbq.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.tmpl.js"></script>
<script type="text/javascript" src="/Scripts/Search.js"></script>

<script language='javascript'> 
$(document).ready(function () { ShwoDialog(); });
</script>
</form>

我想我的ShwoDialog()函數調用時可能是上述所有js正在加載。 有什么方法可以確保僅在完成search.js文件的加載后才調用函數。 有什么技巧是可能的,請與我討論。 謝謝

更新

我嘗試用這種方式做事,但還是沒有運氣

<script type='text/javascript'>
function fireWhenReady() {
    if (typeof function1 != 'undefined') {
        function1();
    }
    else {
        setTimeout(fireWhenReady, 100);
    }
}
$(document).ready(fireWhenReady);
</script>

我的ShowDialog完整代碼

function ShowDialog() {
        $("#SrchDialog")
        .html('<div class="Srchloading"></div>')
            .dialog({
                autoOpen: false,
                bgiframe: true,
                height: 542,
                width: 314,
                modal: false,
                draggable: true,
                resizable: false,
                closeOnEscape: false,
                show: {
                    effect: "fade",
                    duration: 600
                },
                hide: {
                    effect: "fade",
                    duration: 500
                },
                open: function (type, data) {
                    //$(this).dialog('destroy').remove();
                    $(this).parent().appendTo('.g8');

                    var t = $(this).parent(), w = window;
                    t.offset({
                        top: (($(window).height() - 542) / 2),
                        left: (($(window).width() - 314) / 2)
                    });
                },
                close: function () {
                    //$(this).dialog('destroy').remove();
                }
            });


        $("#SrchDialog").load('SearchFeedback.aspx', function (responseTxt, statusTxt, xhr) {
            if (statusTxt == "success") {
                sHtml = responseTxt;
                sHtml = $(sHtml).find('#SrchExtract').html();
                $sHtml = $(sHtml);
                $("#SrchDialog").html(sHtml);
                $("#SrchDialog").dialog('open').show();
                BindEvent();
            }

            if (statusTxt == "error") {
                alert("Error: " + xhr.status + ": " + xhr.statusText);
            }
        });

    }

    function BindEvent() {
        $("input[id*='btnsrchSubmit']").live("click", function () {
            alert('send');
            return false;
        });

        $("#imgSrchclose").live("click", function () {
            $("#SrchDialog").closest('.ui-dialog-content').dialog('close');
            return false;
        });
    }

在search.js文件中定義的給定ShowDialog代碼。 當我在按鈕上單擊ShowDialog函數時,它可以正常工作,但是當我在頁面底部調用時,我得到了一個錯誤,稱為函數未定義。 請告訴我ShowDialog函數出了什么問題以及如何解決。

<script type="text/javascript" src="/Scripts/BlockUI.js"></script>
<script type="text/javascript" src="/Scripts/jquery.ba-bbq.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.tmpl.js"></script>
<script type="text/javascript" src="/Scripts/Search.js"></script>

<script language='javascript'> 
$(document).ready(function () { ShwoDialog(); });
</script>

Javascript將以串行順序處理,因此如果您的函數未使用DOM ,它甚至也可以在沒有docuemnt.ready情況下工作。

首先, blockui.js將被加載,運行。 然后加載並運行jquery ,因此它以串行順序進行,一切都很好。

  1. 如果代碼中的任何地方發生某些錯誤,則可能會被中斷,然后將不進行任何處理。 檢查您的控制台是否有錯誤。

  2. 同樣,如果search.js無法加載,則該函數將保持未定義狀態。 檢查並確保已加載searchjs ,請在chrome開發工具中使用“網絡”標簽,或在firefox / ie中使用對應的標簽。

  3. 正如@joe所提到的,它甚至可能是范圍問題。

  4. 在使用所有這些jquery插件之前,您是否包括了jquery

首先嘗試查看是否確實加載了每個javascript,然后刪除對該函數的調用,並檢查控制台中是否還有其他錯誤。 同樣,當您按此順序調用javascript時,也無需使用准備就緒的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM