Error de función de JavaScript no definida (PERO ESTÁ DEFINIDA)

5 minutos de lectura

Avatar de usuario de Adam A
Adán un

Tengo una función de JavaScript que se activa en el desenfoque. Por extraño que parezca, funcionó bien la primera vez que lo ejecuté, y desde entonces recibo un error que dice Función de JavaScript no definida, y deja de ejecutarse. He buscado en Google problemas similares, pero ninguno de los consejos ha podido resolver el problema. Asp.Net 3.5 Webforms, si es importante. He incluido algunas funciones adicionales y líneas de código que pueden no estar relacionadas con el problema. El problema que tengo se refiere a updateFiscalGrid, la función grande. El HTML que se une al evento está debajo de la función.

<%@ 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="https://stackoverflow.com/questions/42169588/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>

  • ¡Hola! ¿Inspeccionaste tu código? Me refiero al navegador. Tal vez alguna variable establecida dentro de su función javascript <%%> están causando errores en el script, haciendo que la función sea ‘no definida’

    – Marcelo Barbosa

    10 de febrero de 2017 a las 22:52


  • ¡Resolví esto! era un extra)

    – Adán A.

    10 de febrero de 2017 a las 23:16

  • Hola, ¿puedes marcar una respuesta/añadir la tuya?

    – Burkely91

    14 de septiembre de 2020 a las 9:49

Usando las herramientas de desarrollo del navegador, vea si puede llamar a la función manualmente desde la consola. Si aún obtiene Función no definida, haga lo siguiente:

  • Comprobar errores tipográficos
  • Si usa una página maestra, asegúrese de no colocar la referencia de la página del script dentro de las etiquetas del contenedor (que se sobrescriben con el contenido real de la página, esto es por experiencia personal jajaja)
  • Limpia tu caché y recarga la página

  • Solo vine a decir que lo resolví. era un paréntesis extra

    – Adán A.

    10 de febrero de 2017 a las 22:48

  • Hola, @Marvin, mi segundo punto es asegurarme de que no haya código dentro de la etiqueta asp:contentplaceholder de su página maestra, ya que esta es solo una etiqueta de marcador de posición que se sobrescribe una vez que el sitio muestra el contenido real de la página deseada.

    –Jimmy Hodgson

    6 de abril de 2020 a las 3:03

  • ¿Y si funciona con consola, pero no en la página?

    – klm123

    3 abr 2021 a las 17:48

Esto también sucedió porque estaba tratando de llamar a una función que tenía el mismo nombre de variable.

var fun = fun()

lo que me dejo con esta pregunta es que tenia un empty function en mi espacio de nombres

y cuando yo called esa funcion, yo tenia esto error eso hace que toda la página deje de funcionar

TypeError: MyNamespcae.myFunction is not a function

así que no cree una función vacía, al menos agregue una declaración como void (0); o devolver nulo;

Me he encontrado con este tipo de error muy a menudo.

En primer lugar, verificaré si estoy llamando a la función correcta, si todo está bien, borro la memoria caché y vuelvo a cargar, funciona para mí cada vez.

Mantenga presionado el botón de recarga y luego borre el caché

Espero que esto funcione… 🙂

bueno, probablemente esa sea la razón por la cual: Error de referencia no detectado: la función no está definida con un clic

Como respuesta corta: “Nunca use .onclick(), o atributos similares [onblur()] de un script de usuario!”

Avatar de usuario de Dumi
Dumi

Para referencia,

En mi caso, escribí mal el nombre de mi variable en función.

var myVar = "";

Pero en función, escribió espacios en blanco incluidos en ‘mi Var’, luego vi el siguiente mensaje en la consola.

‘función xxx no está definida’

Avatar de usuario de Hizabr
Hizabr

En mi caso (estoy usando asp:UpdatePanel), si el script aparece en la página solo después de un async post back no se ejecutará ni será accesible por ningún JavaScript o consola de navegador (undefined), así que cambio cualquiera button el resultado es que aparece un nuevo script después de la publicación de regreso a sync post back.

¿Ha sido útil esta solución?