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 !