web-dev-qa-db-fra.com

Fonction JavaScript Erreur non définie (BUT IT IS DÉFINI)

J'ai une fonction JavaScript qui se déclenche sur le flou. Étrangement, cela a bien fonctionné la première fois que je l'ai exécutée et, depuis lors, une erreur m'indiquant que la fonction JavaScript n'est pas définie, est arrêtée. J'ai cherché sur Google des problèmes similaires, mais aucun des conseils n'a été en mesure de résoudre le problème. Formulaires Web Asp.Net 3.5, si cela compte. J'ai inclus des fonctions supplémentaires et des lignes de code qui peuvent ne pas être liées au problème. Le problème que je rencontre concerne updateFiscalGrid, la grande fonction. Le code HTML associé à l'événement est situé sous la fonction. 

<%@ 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>
7
Adam A

À l'aide des outils de développement du navigateur, voyez si vous pouvez appeler la fonction manuellement à partir de la console. Si vous obtenez toujours une fonction non définie, procédez comme suit:

  • Vérifier les fautes de frappe
  • Si vous utilisez une page maître, assurez-vous de ne pas placer la référence de la page de script à l'intérieur des balises de conteneur (qui sont remplacées par le contenu réel de la page, il s'agit d'une expérience personnelle lol).
  • Effacez votre cache et rechargez la page
3
Jimmy Hodgson

ce qui me laisse à cette question est que j'avais un empty function dans mon espace de noms 

et quand j’ai called cette fonction, j’ai eu cette error qui fait que la page entière ne fonctionne plus 

TypeError: MyNamespcae.myFunction is not a function

alors ne créez pas de fonction vide, ajoutez au moins une instruction comme void (0); ou retourne null;

1

c'est probablement la raison pour laquelle: Uncaught ReferenceError: la fonction n'est pas définie avec onclick

En réponse courte: "N'utilisez jamais .onclick (), ou des attributs similaires [onblur ()] à partir d'un script utilisateur!"

1
peterPP1

Au bout du compte, votre code côté serveur n'a pas d'importance. J'aurais pu être écrit dans une autre langue côté serveur.

Si vous constatez cette erreur sur le navigateur, vous devez vérifier le code javascript généré par votre code côté serveur.

Une fois là-bas, vous pourrez voir si la fonction est vraiment définie ou non. Sinon, il y a un problème avec la génération de code javascript côté serveur.

0
Mestre San