JavaScript函数未定义错误(但它已被定义)

时间:2017-02-10 22:21:58

标签: javascript html asp.net webforms

我有一个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>

12 个答案:

答案 0 :(得分:4)

使用浏览器开发工具查看是否可以从控制台手动调用该功能。如果仍然未定义函数,请执行以下操作:

  • 检查拼写错误
  • 如果您使用母版页,请确保您没有将脚本页面的引用放在容器标记内(这会被实际页面内容覆盖,这来自个人经验lol)
  • 清除缓存并重新加载页面

答案 1 :(得分:1)

很可能这就是为什么:Uncaught ReferenceError: function is not defined with onclick

作为一个简短的回答:“永远不要使用.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代码生成出了问题。