IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Uncaught ReferenceError: "x" is not defined


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Uncaught ReferenceError: "x" is not defined
    Bonjour à tout.e.s,

    Je sais que ce sujet a été traité un milliard de fois mais j'ai beau regarder tous les forums et les différentes réponses à cette question posée n-fois, je n'arrive toujours pas à appliquer ces méthodes à mon petit programme ! J'essaie tout simplement d'intégrer un petit programme de validation d'adresse ip à une page html basique, mais la console me retourne toujours ce fameux : "Uncaught ReferenceError: Ip is not defined".
    Alors je sais qu'il faut attendre que le DOM soit chargé avant que le script ne soit initialisé et pour cette raison j'ai bien mis les src des scripts (parce que ça me fait la même chose avec deux autres petits programmes) avant la dernière balise body en bas de la page html. J'ai bien vérifié les ID pour le getElementbyID, et la syntaxe générale mais rien n'y fait : toujours ce "Uncaught ReferenceError: "x" is not defined" alors que j'ai déclaré la variable en dehors de la fonction (avant la fonction) comme préconisé partout ! Je sais qu'un détail m'échappe mais je ne sais pas quoi ! Voilà mes codes (d'ailleurs y a peut-être d'autres erreurs mais c'est surtout le front-end qui me pose problème) :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <!DOCTYPE html>
     
    <nav>
        <ul>
            <li><a href="index.html">Accueil</a></li>
            <li><a href="#a">Où me trouver</a></li>
            <li><a href="#b">Search Z</a></li>
            <li><a href="#c1">IP Validator</a></li>
            <li><a href="#c3">Bigram</a></li>
        </ul>
    </nav>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
     
        <title> Ma page de tests Matrice by Guidadou</title>
     
        <link rel="stylesheet" href="style.css" type="text/css" />
    </head>
    <body>
        <h1><strong>Hello everybody</strong></h1>
        <h2> Here are my answers to the Matrice school integration tests </h2>
        <br />
    <div id="a" class="map">
        <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d83998.7645736217!2d2.276994470100213!3d48.85894658178973!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47e66e1f06e2b70f%3A0x40b82c3688c9460!2sParis!5e0!3m2!1sfr!2sfr!4v1643752840566!5m2!1sfr!2sfr" width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe><br /> Et Paris qui bat la mesure<br/>Paris qui mesure notre émoi<br/>Et Paris qui bat la mesure... Nous fredonne, fredonne déjà !</div>
     
        <div id="b" class="scroller">
            Quelle admirable journée ! Le vaste parc se pâme sous l’œil brûlant du soleil, comme la jeunesse sous la domination de l’Amour. L’extase universelle des choses ne s’exprime par aucun bruit ; les eaux elles-mêmes sont comme endormies. Bien différente des fêtes humaines, c’est ici une orgie silencieuse. On dirait qu’une lumière toujours croissante fait de plus en plus étinceler les objets ; que les fleurs excitées brûlent du désir de rivaliser avec l’azur du ciel par l’énergie de leurs couleurs, et que la chaleur, rendant visibles les parfums, les fait monter vers l’astre comme des fumées. Cependant, dans cette jouissance universelle, j’ai aperçu un être affligé. Aux pieds d’une colossale Vénus, un de ces fous artificiels, un de ces bouffons volontaires chargés de faire rire les rois quand le Remords ou l’Ennui les obsède, affublé d’un costume éclatant et ridicule, coiffé de cornes et de sonnettes, tout ramassé contre le piédestal, lève des yeux pleins de larmes vers l’immortelle Déesse.Et ses yeux disent : — « Je suis le dernier et le plus solitaire des humains, privé d’amour et d’amitié, et bien inférieur en cela au plus imparfait des animaux. Cependant je suis fait, moi aussi, pour comprendre et sentir l’immortelle Beauté ! Ah ! Déesse ! Ayez pitié de ma tristesse et de mon délire ! » Mais l’implacable Vénus regarde au loin je ne sais quoi avec ses yeux de marbre.
        </div>
        <div class="form">
            <p>
                <form id="searchz">
                    <label id="c1" for="answerZ">Search Z</label>
                    <br/><br/><br/>
                    <input name="SearchZ" type="text" id="answerZ" placeholder="Tapez un texte">
                    <br/><br/>
                    <button onclick="Search_Z(strInput)" type="submit" id="btnZ">Lancer</button>
                    <p style="color: rgb(4, 0, 255);" id="erreurZ"></p>
                    <p style="color: rgb(4, 0, 255);" id="showresultZ"></p>
                </form>
            </p><br/>
            <p>
                <form id="ipvalidator">
                    <label id="c2" for="answerIP">Ip Validator</label>
                    <br/><br/><br/>
                    <input name="IpValidator" type="text" id="answerIP" placeholder="Tapez une adresse IP">
                    <br/><br/>
                    <button onclick="IpValidator(Ip)" type="submit" id="btnIP">Lancer</button>
                    <p style="color: rgb(4, 0, 255);" id="erreur"></p>
                    <p style="color: rgb(4, 0, 255);" id="showresultIP"></p>
                </form>
            </p><br/>
            <p>
                <form id="bigram">
                    <label id="c3" for="answerBi">Bigram</label>
                    <br/><br/><br/>
                    <input name="Bigram" type="text" id="answerBi" placeholder="Tapez votre texte">
                    <br/><br/>
                    <button onclick="Bigram(Str)" type="submit" id="btnBi">Lancer</button>
                    <p style="color: rgb(4, 0, 255);" id="erreurBI"></p>
                    <p style="color: rgb(4, 0, 255);" id="showresultBI"></p>
                </form>
            </p><br/>
        </div>
        <script src="Search_Z/Search_Z.js"></script>
        <script src="Ip_Validator/Ip_Validator.js"></script>
        <script src="Bigram/Bigram.js"></script>
    </body>
    </html>

    et mon script :

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    document.getElementById("ipvalidator").addEventListener("btnIP", function(e) {
    	e.preventDefault();
    	console.log("Réponse envoyée");
     
    	var IP = document.getElementById("answerIP");
    	var erreur;
     
    	if (!IP.value) {
    		erreur = " Veuillez renseigner une adresse IP "
    	}
     
    	if (erreur) {
    		e.preventDefault();
    		document.getElementById("erreur").innerHTML = erreur
    	}
     
    	document.getElementById("btnIP").onclick = IpValidator(IP)
     
    	function IpValidator(IP)
     {
    	var iptable = IP.split('.');
    	var ipformat = /^1?\d?\d$/;
    	var ipformat2 = /^2[0-5][0-5]$/;
    	var i = 0;
     
    	while (iptable[i])
    	{
    		if (!(iptable[i].match(ipformat)) && !(iptable[i].match(ipformat2)))
    		{
    			return (-1);
    		}
    		i++;
    	}
    	return (1);
    	};
    });	
    	function resultat()
    {
    	if (IpValidator){
    		console.log("Valide");
    		document.getElementById("showresultIP").innerHTML = "Valide";	
    	} else {
    	console.log("Non valide");
    	document.getElementById("showresultIP").innerHTML = "Non valide";
    	}
    };

    Merci d'avance pour votre aide ! Je dois intégrer prochainement une formation assez exigeante et j'ai l'impression de bloquer sur un truc basique en js ! Merci !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 409
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 409
    Points : 15 778
    Points
    15 778
    Par défaut
    vous avez cette erreur à quelle ligne de votre code ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Pour "Ip Validator" ligne 1:1 de la page html... bizarre. Par contre pour un autre programme "bigram.js" il me donne bien une erreur sur la ligne 34 du script js :

    Bigram.js : erreur : "Uncaught ReferenceError: Bigram is not defined" / <anonymous> ligne 34 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    document.getElementById("bigram").addEventListener("btnBi", function(e) {
    	e.preventDefault();
    	console.log("Réponse envoyée");
     
    var Str = document.getElementById(answerBi);
     
    	if (!Str.value) {
    	erreurBI = " Veuillez taper un texte s'il vous plaît "
    	}
     
    	if (erreurBI) {
    		e.preventDefault();
    		document.getElementById("erreurBI").innerHTML = erreurBI
    	}
     
    function Bigram(Str) {
    	var i = 0;
    	var list = Str.split(" ");
     
    	if (list.length <= 3)
    	{
    		console.log(Str);
    		return (-1);
    	}
    	i = 2;
    	while (list[i])
    	{
    		console.log(list[i - 2] + ' ' + list[i - 1] + ' ' + list[i]);
    		i++;
    	}
    	return (i);
    }});
    	if (bigram) {
    	document.getElementById(showresultBI).innerHTML = Bigram(Str);
    }
    C'est à n'y rien comprendre, j'ai utilisé la même structure sur les deux... ou en tout cas j'en ai l'impression. Quelque chose m'échappe !

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 929
    Points
    44 929
    Par défaut
    Bonjour,
    dans ton fichier la fonction Bigram est définie dans le scope de la fonction appelée via le addEventListener, elle n'est donc pas visible en dehors.

    Tu aurais pu le voir avec une meilleur indentation de ton code, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    document.getElementById("bigram").addEventListener("btnBi", function(e) {
      e.preventDefault();
      console.log("Réponse envoyée");
     
      var Str = document.getElementById(answerBi);
     
      if (!Str.value) {
        erreurBI = " Veuillez taper un texte s'il vous plaît "
      }
     
      if (erreurBI) {
        e.preventDefault();
        document.getElementById("erreurBI")
          .innerHTML = erreurBI
      }
     
      function Bigram(Str) {
        var i = 0;
        var list = Str.split(" ");
     
        if (list.length <= 3) {
          console.log(Str);
          return (-1);
        }
        i = 2;
        while (list[i]) {
          console.log(list[i - 2] + ' ' + list[i - 1] + ' ' + list[i]);
          i++;
        }
        return (i);
      }
    });
    if (bigram) {
      document.getElementById(showresultBI).innerHTML = Bigram(Str);
    }

Discussions similaires

  1. [QUOTE]SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
    Par MInfo25 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/08/2017, 22h51
  2. Uncaught ReferenceError: detection is not defined
    Par Alexletyran dans le forum jQuery
    Réponses: 3
    Dernier message: 02/05/2017, 13h59
  3. Réponses: 20
    Dernier message: 09/11/2016, 16h35
  4. Uncaught ReferenceError: geolocate is not defined
    Par Atom87 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/08/2015, 14h49
  5. Uncaught ReferenceError: survoleOn is not defined
    Par Kirax999 dans le forum Google Chrome
    Réponses: 0
    Dernier message: 07/08/2013, 03h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo