[英]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>
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
,因此它以串行順序進行,一切都很好。
如果代碼中的任何地方發生某些錯誤,則可能會被中斷,然后將不進行任何處理。 檢查您的控制台是否有錯誤。
同樣,如果search.js
無法加載,則該函數將保持未定義狀態。 檢查並確保已加載searchjs
,請在chrome開發工具中使用“網絡”標簽,或在firefox / ie中使用對應的標簽。
正如@joe所提到的,它甚至可能是范圍問題。
在使用所有這些jquery插件之前,您是否包括了jquery
?
首先嘗試查看是否確實加載了每個javascript,然后刪除對該函數的調用,並檢查控制台中是否還有其他錯誤。 同樣,當您按此順序調用javascript時,也無需使用准備就緒的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.