我有一个JavaScript模糊功能。奇怪的是,它第一次运行它时工作正常,从那时起我就收到一个错误,说JavaScript函数未定义 - 它停止运行。我搜索过类似的问题,但没有一个建议能够解决这个问题。 Asp.Net 3.5 Webforms,如果重要的话。我已经包含了一些可能与问题无关的额外函数和代码行。我遇到的问题是updateFiscalGrid,大函数。绑定到事件的HTML位于函数下方。
<%@ Page MasterPageFile="~/MasterPages/NPRPage.Master" CodeBehind="NPRFundingApplication.aspx.cs" Inherits="Tea.Hcf.Web.Secured.NPRFundingApplication" AutoEventWireup="true" Language="C#" EnableEventValidation="true" MaintainScrollPositionOnPostback="true" %>
<%@ Register TagPrefix="ew" Namespace="eWorld.UI" Assembly="eWorld.UI" %>
<%@ Register TagPrefix="hcf" Namespace="Tea.Hcf.Web" Assembly="Tea.Hcf.Web" %>
<%@ Register Src="../Controls/NpCdnSearch.ascx" TagName="NpCdnSearch" TagPrefix="np1" %>
<%@ Register Src="../Controls/NpStudentRoster.ascx" TagName="NpStudentRoster" TagPrefix="np2" %>
<script type="text/javascript" language="javascript">
//<![CDATA[
function showMaxWin(nUrl) {
var h = 600;
var w = 800;
var features = 'resizable=1, width=' + w + ', height=' + h + ', top=0, left=0';
NewWin = window.open(nUrl, 'NewWin', features);
}
function dateChangedCallback() {
updateSubTotals();
}
function updateFiscalGrid(){
var RelatedServicesCost = document.getElementById('<%= RPCB_SUPP_SVCS_SUBTOTAL3.ClientID %>').value;
var ResidentialCare = document.getElementById('<%= RPCB_RES_SVCS_SUBTOTAL3.ClientID %>').value;
var TotalCostforResPlacement = document.getElementById('<%= TotalResidentialPlacement.ClientID %>').value;
var SetAside = document.getElementById('<%= rblSetAsideMet.ClientID %>').value;
var LocalTaxSubtraction = document.getElementById('<%= LocalTaxShareSubtraction.ClientID %>').value;
var IDEABRelatedServiceCost = document.getElementById('<%= RelatedServicesSetAside.ClientID %>').value;
var IDEABDiscretionaryServicesCost = document.getElementById('<%= RelatedServicesDiscretionary.ClientID %>').value;
var IDEABREsidentialCare = document.getElementById('<%= ResidentialCareSetAside.ClientID %>').value;
var IDEABDiscResCare = document.getElementById('<%= ResidentialCareDiscretionary.ClientID %>').value;
var StateFSP = document.getElementById('<%= TotalEducationServices2.ClientID %>').value;
var Discretionary = document.getElementById('<%= DiscretionaryTotal.ClientID %>').value;
var IDEABAward = document.getElementById('<%= IdeaBAward.ClientID %>').value;
if(SetAside = '0'){
Discretionary = LocalTaxSubtraction + IDEABRelatedServiceCost + IDEABDiscretionaryServicesCost + IDEABREsidentialCare + IDEABDiscResCare;
}
else {
Discretionary = LocalTaxSubtraction + IDEABDiscretionaryServicesCost + IDEABDiscResCare;
}
IDEABAward = (RelatedServicesCost + ResidentialCare + TotalCostforResPlacement) - Number(Discretionary));
//IDEABAward = (Number(RelatedServicesCost) + Number(ResidentialCare) + Number(TotalCostforResPlacement)) - Number(Discretionary));
document.getElementById('<%= DiscretionaryTotal.ClientID %>').value = Discretionary;
document.getElementById('<%= IdeaBAward.ClientID %>').value = IDEABAward;
}
//]]>
</script>
<td>
<hcf:CurrencyBox ID="LocalTaxShareSubtraction" OnBlur= "updateFiscalGrid();" Precision="2" runat="server" />
</td>
答案 0 :(得分:4)
使用浏览器开发工具查看是否可以从控制台手动调用该功能。如果仍然未定义函数,请执行以下操作:
答案 1 :(得分:1)
作为一个简短的回答:“永远不要使用.onclick()或用户脚本中的类似属性[onblur()]!”
答案 2 :(得分:1)
让我回答这个问题的是我的命名空间中有empty function
当我called
这个功能时,我有error
导致整个页面停止工作
TypeError: MyNamespcae.myFunction is not a function
所以不要创建一个空函数,至少添加一个像void(0)的语句;或返回null;
答案 3 :(得分:1)
这也是因为我试图调用一个具有相同变量名的函数。
var fun = fun()
答案 4 :(得分:0)
供参考,
就我而言,我在函数中未键入变量名。
var myVar = "";
但是在功能上,它在“ my Var”中键入了包含空格,然后我在控制台上看到以下消息。
“功能xxx未定义”
答案 5 :(得分:0)
就我而言(我使用的是asp:UpdatePanel
),如果脚本仅在async post back
之后出现在页面中,则脚本将不会执行,也无法通过任何JavaScript或浏览器控制台进行访问({{ 1}}),因此我将任何undefined
结果切换为新脚本,然后将其发布回button
。
答案 6 :(得分:0)
我不得不放
window.addEventListener('DOMContentLoaded', function() {callFUnction()});
答案 7 :(得分:0)
发生这种情况是因为我已经有一个名为reset的变量,并且函数名也已重置。
var reset = document.querySelector();
function reset() {
};
答案 8 :(得分:0)
万一有人遇到同样的问题。
我的问题是我有await
关键字,但是该函数在函数声明前没有async
。这导致所有函数抛出未定义的错误。
答案 9 :(得分:0)
我尝试将函数绑定到 window 对象,这样它就成功了!
window.func = arg => console.log('=\\')
答案 10 :(得分:0)
我经常遇到这种错误。
首先我会检查我是否调用了正确的函数,如果一切正常,那么我会清除缓存并重新加载它每次都对我有用。
Long press reload button and then do cache clear
希望这有效... :)
答案 11 :(得分:-1)
在一天结束时,您的服务器端代码无关紧要。我可以用任何其他服务器端语言编写。
如果您在浏览器上看到该错误,则需要检查服务器端代码生成的javascript代码。
在那里,您将能够看到该功能是否真正定义。如果没有,服务器端的javascript代码生成出了问题。