ぼかしで起動する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>
ブラウザ開発ツールを使用して、コンソールから手動で関数を呼び出すことができるかどうかを確認します。それでも未定義の関数が表示される場合は、次を実行します。
この質問をさせてくれたのは、empty function
私の名前空間
そして、called
その関数を使用すると、ページ全体が機能しなくなるerror
がありました
TypeError: MyNamespcae.myFunction is not a function
したがって、空の関数を作成しないでください。少なくとも、void(0)のようなステートメントを1つ追加してください。またはnullを返します。
これは、同じ変数名を持つ関数を呼び出そうとしたためにも発生しました。
var fun = fun()
おそらくそれが理由でしょう: ncaught ReferenceError:関数がonclickで定義されていません
簡単な答えとして:「ユーザースクリプトから.onclick()または同様の属性[onblur()]を使用しないでください!」
結局のところ、サーバー側のコードは重要ではありません。私は他のサーバーサイド言語で書かれていたかもしれません。
ブラウザでそのエラーが表示されている場合は、サーバー側コードによって生成されたjavascriptコードを確認する必要があります。
ここで、関数が実際に定義されているかどうかを確認できます。そうでない場合は、サーバー側のJavaScriptコード生成に問題があります。
参考のために、
私の場合、関数で変数名をミスタイプしました。
var myVar = "";
しかし、機能的には、「var」に空白を含めて入力すると、コンソールに次のメッセージが表示されました。
「関数xxxは未定義」