【问题标题】:JavaScript Function Not Defined Error (BUT IT IS DEFINED)JavaScript 函数未定义错误(但它已定义)
【发布时间】:2017-06-29 09:41:47
【问题描述】:

我有一个在模糊时触发的 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>

【问题讨论】:

  • 嗨!你检查过你的代码吗?我的意思是在浏览器上。也许您的 javascript 函数 &lt;%%&gt; 中设置的某些变量会导致脚本出错,从而使函数“未定义”
  • 我解决了这个问题!这是一个额外的)
  • 您好,您可以标记答案/添加您自己的答案吗?

标签: javascript html asp.net webforms


【解决方案1】:

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

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

【讨论】:

  • 我只是来说我解决了它。这是一个额外的括号
  • 嗨@Marvin,我的第二点是确保您的母版页的 asp:contentplaceholder 标记内没有代码,因为这只是一个占位符标记,一旦网站呈现被所需页面的实际内容。
  • 如果它在控制台上工作,但不在页面上怎么办?
【解决方案2】:

这也是因为我试图调用一个具有相同变量名的函数。

var fun = fun()

【讨论】:

    【解决方案3】:

    让我回答这个问题的原因是我的命名空间中有一个 empty function

    当我 called 那个函数时,我有这个 error 导致整个页面停止工作

    TypeError: MyNamespcae.myFunction is not a function
    

    所以不要创建一个空函数,至少添加一个语句,如 void(0);或返回 null;

    【讨论】:

      【解决方案4】:

      可能这就是原因:Uncaught ReferenceError: function is not defined with onclick

      作为一个简短的回答:“永远不要使用 .onclick() 或用户脚本中的类似属性 [onblur()]!”

      【讨论】:

        【解决方案5】:

        供参考,

        在我的例子中,我在函数中输错了变量名。

        var myVar = "";
        

        但在函数中,它在“my Var”中输入了包含空格,然后我在控制台上看到了以下消息。

        '函数 xxx 未定义'

        【讨论】:

          【解决方案6】:

          就我而言(我使用的是asp:UpdatePanel),如果脚本仅在async post back 之后出现在页面中,它将不会被任何JavaScript 或浏览器控制台(undefined)执行或访问,所以我切换任何button 结果在回发到sync post back 后会出现一个新脚本。

          【讨论】:

            【解决方案7】:

            我不得不放

            window.addEventListener('DOMContentLoaded', function() {callFUnction()});
            

            【讨论】:

              【解决方案8】:

              这发生在我身上,因为我已经有一个名为 reset 的 var,并且函数名也被重置了。

              var reset = document.querySelector();
              
              function reset() {
              };
              

              【讨论】:

                【解决方案9】:

                如果有人遇到同样的问题。

                我的问题是我有 await 关键字,但函数在函数声明前没有 async。它导致所有函数抛出未定义的错误。

                【讨论】:

                  【解决方案10】:

                  我尝试将函数绑定到窗口对象,以便它工作!

                  window.func = arg => console.log('=\\')
                  

                  【讨论】:

                    【解决方案11】:

                    我经常遇到这种错误。

                    首先我会检查我是否调用了正确的函数,如果一切正常,那么我会清除缓存并重新加载它每次都对我有用。

                    Long press reload button and then do cache clear

                    希望这可行... :)

                    【讨论】:

                      【解决方案12】:

                      尝试从&lt;script&gt; 标记中删除type="text/javascript"

                      【讨论】:

                      • 如果你能描述更多关于答案的内容会更好。
                      猜你喜欢
                      • 2021-06-08
                      • 2022-05-03
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多