我有一个名为ShwoDialog()
的js函数,它位于search.js文件中。当我运行我的应用程序然后我收到firefox ReferenceError: ShwoDialog is not defined
我可能在加载名为search.js的js文件之前调用函数ShwoDialog()
,其中定义了函数。所以我看到了html源代码,发现ShwoDialog()
在search.js文件加载后正在调用。
<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
函数有什么问题以及解决方法。
答案 0 :(得分:0)
<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将按顺序处理,因此如果您的功能未使用docuemnt.ready
,它甚至可以在没有DOM
的情况下运行。
将加载第一个blockui.js
,然后运行。然后加载并运行jquery
,因此它按顺序排列,你们都很好。
如果在代码中的任何地方发生某些错误,这可能会被中断,之后什么都不会被处理。检查控制台是否有错误。
此外,如果search.js
无法加载,显然该函数将保持未定义状态。检查并确保已加载searchjs
,使用chrome dev工具中的网络选项卡或firefox /中的对应项。
正如@joe所提到的,它甚至可能是一个范围问题。
在使用所有这些jquery插件之前,您是否已包含jquery
?
答案 1 :(得分:0)
首先尝试查看每个javascript是否实际加载,请删除对该函数的调用,并检查控制台中是否还有其他错误。当您按此顺序调用javascript时,也无需使用文档。