Pratique JavaExemples de scripts avec code source Code

⚡ Résumé intelligent

Pratique Code Exemples utilisant JavaCe script illustre comment les boucles, la validation de formulaires et les événements permettent de résoudre les tâches courantes d'un navigateur. Cet article présente un générateur de tables de multiplication, un validateur complet de formulaire d'inscription, une fenêtre contextuelle qui s'affiche au survol de la souris, une horloge numérique en temps réel et les bonnes pratiques qui garantissent la fiabilité de tels scripts.

  • ✖️ Boucles imbriquées : La table de multiplication construit une chaîne HTML avec une boucle de ligne externe et une boucle de colonne interne.
  • 📝 Validation du formulaire : Les tableaux parallèles associent chaque entrée à son propre conteneur d'erreurs, de sorte que les messages apparaissent à côté du champ qui a échoué.
  • 📧 Règle relative aux e-mails : La vérification de la position du symbole arobase et du point final permet de rejeter les adresses malformées avant leur soumission.
  • 🇧🇷 Gestion des événements: La méthode addEventListener associe un comportement à un élément sans insérer de script dans le balisage.
  • Mises à jour programmées : La fonction setInterval répète une fonction selon un calendrier fixe, ce qui illustre l'exemple d'horloge en temps réel.
  • (I.e. Règle du serveur : Les vérifications côté client n'améliorent que l'expérience utilisateur, et chaque valeur doit être validée à nouveau sur le serveur.
  • 🧹 Pratique moderne : Dans le nouveau code, remplacez document.write et les variables globales implicites par textContent, let et const.

JavaExemples de scripts avec code source Code

Ce que vous construirez dans ces JavaExemples de scripts

Chaque exemple ci-dessous est une page HTML complète, exécutable dans n'importe quel navigateur sans étape de compilation ni bibliothèque externe. Ensemble, ils couvrent les trois compétences présentes dans presque tous les scripts de navigateur : la génération de balisage à partir de données, la validation des entrées utilisateur et la réaction aux événements.

Exemple Concept mis en pratique Principales méthodes utilisées
Table de multiplication Boucles imbriquées et construction de chaînes de caractères invite, pour, pendant que, document.écrire
Validation de formulaire Tableaux, conditions et mises à jour du DOM getElementById, indexOf, lastIndexOf, innerHTML
Message contextuel Gestion des événements ajouterEventListener, alerte
Digihorloge tal Minuteurs et formatage de date setInterval, Date, padStart, texteContent

Connaissance de base avec Javascénario La syntaxe est supposée correcte. Si les boucles ne vous sont toujours pas familières, consultez la documentation. comment utiliser les boucles dans Javascénario avant de commencer.

Exemple 1: JavaTable de multiplication de scripts

Créez une table de multiplication simple demandant à l'utilisateur le nombre de lignes et de colonnes.

Solution:

<html>
<head>
  <title>Multiplication Table</title>
  <script type="text/javascript">
    var rows = prompt("How many rows for your multiplication table?");
    var cols = prompt("How many columns for your multiplication table?");
    if(rows == "" || rows == null)
   		 rows = 10;
    if(cols== "" || cols== null)
   		 cols = 10;
    createTable(rows, cols);
    function createTable(rows, cols)
    {
      var j=1;
      var output = "<table border='1' width='500' cellspacing='0' cellpadding='5'>";
      for(i=1;i<=rows;i++)
      {
    	output = output + "<tr>";
        while(j<=cols)
        {
  		  output = output + "<td>" + i*j + "</td>";
   		  j = j+1;
   		}
   		 output = output + "</tr>";
   		 j = 1;
    }
    output = output + "</table>";
    document.write(output);
    }
  </script>
</head>
<body>
</body>
</html>

Résultat (3 lignes et 4 colonnes) :

1   2   3   4
2   4   6   8
3   6   9  12

Code explication: La boucle for externe crée une ligne de tableau à chaque itération, tandis que la boucle while interne remplit cette ligne avec une cellule par colonne. Le compteur j La valeur est réinitialisée à 1 après chaque ligne, une étape souvent oubliée par les débutants. Sans cette réinitialisation, seule la première ligne contiendrait des cellules.

Astuce : La fonction prompt renvoie toujours une chaîne de caractères. L'expression i*j fonctionne parce que JavaLe script convertit les deux opérandes en nombres pour la multiplication, mais une comparaison telle que rows > 5 comparerait du texte. Enveloppez l'entrée dans Number() lorsque la valeur est utilisée aussi bien pour des calculs arithmétiques que pour des comparaisons.

Exemple n° 2 : Exemple de formulaires JS

Créez un exemple de formulaire qui recueille le prénom, le nom, l'adresse e-mail, l'identifiant, le mot de passe et sa confirmation. Tous les champs sont obligatoires et l'adresse e-mail doit être au format correct. Les valeurs saisies dans les champs « Mot de passe » et « Confirmation du mot de passe » doivent être identiques. Après validation… Javascénario, afficher les messages d'erreur appropriés en rouge juste à côté de la zone de texte où se trouve l'erreur.

Solution avec source Code:

<html>
<head>
  <title>Form Validation</title>
  <script type="text/javascript">
    var divs = new Array();
    divs[0] = "errFirst";
    divs[1] = "errLast";
    divs[2] = "errEmail";
    divs[3] = "errUid";
    divs[4] = "errPassword";
    divs[5] = "errConfirm";
    function validate()
	{
      var inputs = new Array();
      inputs[0] = document.getElementById('first').value;
      inputs[1] = document.getElementById('last').value;
      inputs[2] = document.getElementById('email').value;
      inputs[3] = document.getElementById('uid').value;
      inputs[4] = document.getElementById('password').value;
      inputs[5] = document.getElementById('confirm').value;
      var errors = new Array();
      errors[0] = "<span style='color:red'>Please enter your first name!</span>";
      errors[1] = "<span style='color:red'>Please enter your last name!</span>";
      errors[2] = "<span style='color:red'>Please enter your email!</span>";
      errors[3] = "<span style='color:red'>Please enter your user id!</span>";
      errors[4] = "<span style='color:red'>Please enter your password!</span>";
      errors[5] = "<span style='color:red'>Please confirm your password!</span>";
      for (i in inputs)
      {
        var errMessage = errors[i];
        var div = divs[i];
        if (inputs[i] == "")
        	document.getElementById(div).innerHTML = errMessage;
        else if (i==2)
        {
          var atpos=inputs[i].indexOf("@");
          var dotpos=inputs[i].lastIndexOf(".");
          if (atpos<1 || dotpos<atpos+2 || dotpos+2>=inputs[i].length)
        	document.getElementById('errEmail').innerHTML = "<span style='color: red'>Enter a valid email address!</span>";
          else
        	document.getElementById(div).innerHTML = "OK!";
        }
        else if (i==5)
        {
          var first = document.getElementById('password').value;
          var second = document.getElementById('confirm').value;
          if (second != first)
        	document.getElementById('errConfirm').innerHTML = "<span style='color: red'>Your passwords don't match!</span>";
          else
       		document.getElementById(div).innerHTML = "OK!";
        }
        else
        	document.getElementById(div).innerHTML = "OK!";
       }
     }
        function finalValidate()
        {
          var count = 0;
          for(i=0;i<6;i++)
          {
            var div = divs[i];
            if(document.getElementById(div).innerHTML == "OK!")
            count = count + 1;
          }
          if(count == 6)
          	document.getElementById("errFinal").innerHTML = "All the data you entered is correct!!!";
        }
   </script>
</head>
<body>
	<table id="table1">
      <tr>
        <td>First Name:</td>
        <td><input type="text" id="first" onkeyup="validate();" /></td>
        <td><div id="errFirst"></div></td>
      </tr>
      <tr>
        <td>Last Name:</td>
        <td><input type="text" id="last" onkeyup="validate();"/></td>
        <td><div id="errLast"></div></td>
      </tr>
      <tr>
        <td>Email:</td>
        <td><input type="text" id="email" onkeyup="validate();"/></td>
        <td><div id="errEmail"></div></td>
      </tr>
      <tr>
        <td>User Id:</td>
        <td><input type="text" id="uid" onkeyup="validate();"/></td>
        <td><div id="errUid"></div></td>
      </tr>
      <tr>
        <td>Password:</td>
        <td><input type="password" id="password" onkeyup="validate();"/></td>
        <td><div id="errPassword"></div></td>
      </tr>
      <tr>
        <td>Confirm Password:</td>
        <td><input type="password" id="confirm" onkeyup="validate();"/></td>
        <td><div id="errConfirm"></div></td>
      </tr>
      <tr>
        <td><input type="button" id="create" value="Create" onclick="validate();finalValidate();"/></td>
        <td><div id="errFinal"></div></td>
      </tr>
	</table>
</body>
</html>

Comportement attendu :

Empty first name        -> Please enter your first name!
Email "ann@site"        -> Enter a valid email address!
Email "ann@site.com"    -> OK!
Passwords differ        -> Your passwords don't match!
All six fields valid    -> All the data you entered is correct!!!

Code explication: Trois réseaux fonctionnent en parallèle. entrées contient les valeurs actuelles, erreurs contient les messages correspondants, et div L'index contient l'identifiant du conteneur affichant chaque message. Il associe ainsi un champ, son texte d'erreur et son emplacement de sortie. La branche email n'accepte une adresse que si le symbole arobase n'est pas le premier caractère et si au moins deux caractères séparent l'arobase du point final.

⚠️ Attention : La validation côté client améliore l'expérience utilisateur, mais n'offre aucune sécurité. N'importe qui peut la désactiver. JavaExécutez le script ou envoyez la requête directement au point de terminaison ; par conséquent, chaque règle indiquée ici doit être répétée sur le serveur.

Exemple n° 3 : Message contextuel utilisant un événement

Affichez un simple message « Bienvenue !!! » sur votre page Web de démonstration, et lorsque l'utilisateur survole le message, une fenêtre contextuelle doit s'afficher avec le message « Bienvenue sur ma page Web !!! ».

Solution:

<html>
    <head>
        <title>Event!!!</title>
        <script type="text/javascript">
            function trigger() {
                document.getElementById("hover").addEventListener("mouseover", popup);
                function popup() {
                    alert("Welcome to my WebPage!!!");
                }
            }
        </script>
        <style>
            p{
                font-size: 50px;
                position: fixed;
                left: 550px;
                top: 300px;
            }
        </style>
    </head>
    <body onload="trigger();">
        <p id="hover">Welcome!!!</p>
    </body>
</html>

Comportement attendu :

Page loads      -> the text "Welcome!!!" appears in large type
Mouse hovers    -> an alert box shows "Welcome to my WebPage!!!"

Code explication: L'écouteur est intégré à la fonction de déclenchement, qui s'exécute lors de l'événement `onload` du corps de la page. Il est important d'attendre le chargement complet, car le paragraphe avec l'identifiant « hover » n'existe pas encore tant que l'en-tête n'est pas analysé. On obtient le même résultat de manière plus élégante en plaçant le script juste avant la balise de fermeture `</body>`, ou en ajoutant l'attribut `defer`.

Exemple n° 4 : En direct DigiHorloge tal utilisant setInterval

Affichez l'heure actuelle sur la page et actualisez-la chaque seconde. Cet exemple présente les minuteurs et illustre l'alternative moderne à la fonction document.write.

<html>
<head>
    <title>Digital Clock</title>
</head>
<body>
    <h2 id="clock">--:--:--</h2>

    <script>
        function showTime() {
            const now = new Date();
            const hh = String(now.getHours()).padStart(2, "0");
            const mm = String(now.getMinutes()).padStart(2, "0");
            const ss = String(now.getSeconds()).padStart(2, "0");

            // textContent is safer than innerHTML for plain text
            document.getElementById("clock").textContent = hh + ":" + mm + ":" + ss;
        }

        showTime();                 // draw immediately
        setInterval(showTime, 1000); // then refresh every second
    </script>
</body>
</html>

Comportement attendu :

09:05:07
09:05:08
09:05:09   (the heading updates in place once per second)

Appeler showTime une fois avant setInterval évite un délai visible d'une seconde à l'ouverture de la page. Utilisez clearInterval avec la valeur renvoyée par setInterval lorsque l'horloge doit s'arrêter.

Meilleures pratiques pour la rédaction de ces JavaExemples de scripts

Les trois exemples originaux datent d'un style antérieur de JavaScript. La liste ci-dessous indique les modifications à apporter lors de l'adaptation pour la production.

  1. Remplacez document.write : Cette méthode efface l'intégralité du document lorsqu'elle est appelée après le chargement de la page. Créez plutôt un élément et définissez son contenu textuel ou ajoutez un nœud.
  2. Déclarez chaque variable : Utilisez `let` et `const` plutôt que de vous fier à des variables globales implicites comme le compteur. i dans les boucles ci-dessus.
  3. Préférez textContent à innerHTML : L'insertion de texte fourni par l'utilisateur avec innerHTML ouvre une faille de sécurité permettant les attaques XSS (Cross-Site Scripting).
  4. Déplacez les gestionnaires hors du balisage : Remplacez les attributs onkeyup et onclick par addEventListener, ce qui permet de séparer le comportement de la structure.
  5. Convertir l'entrée de l'invite : Encapsulez les valeurs dans la fonction Number() avant de les utiliser dans des comparaisons, car prompt renvoie toujours une chaîne de caractères.
  6. Validez à nouveau sur le serveur : Considérez les vérifications du navigateur comme une simple couche de commodité.

Pour approfondir ces exemples, consultez Javaméthodes de tableau de script pour les tableaux parallèles utilisés dans le validateur de formulaire, JavaChaînes de script pour les vérifications de position par courriel, et cookies dans Javascénario pour mémoriser les valeurs saisies par un visiteur. Déterminez où placer le script final en lisant interne et externe Javascénario.

FAQ

Enregistrez le code dans un fichier avec l'extension .html et ouvrez-le dans n'importe quel navigateur. Aucun serveur, compilateur ou bibliothèque n'est requis pour les quatre exemples de cette page.

La boucle while s'arrête lorsque j dépasse le nombre de colonnes. Sans réinitialiser j à 1, les lignes suivantes ne contiendraient aucune cellule.

Non. Cela améliore uniquement l'expérience en fournissant un retour d'information instantané. Une requête peut contourner complètement le navigateur ; le serveur doit donc appliquer les mêmes règles avant de stocker quoi que ce soit.

L'événement mouseover se déclenche à nouveau lorsque le pointeur se déplace sur un élément enfant, tandis que l'événement mouseenter ne se déclenche qu'une seule fois, pour l'élément lui-même. Choisissez mouseenter si vous souhaitez éviter les déclenchements répétés.

L'IA est utile pour une première ébauche, mais le code généré utilise fréquemment innerHTML avec des entrées non échappées. Lisez chaque ligne et remplacez les écritures DOM non sécurisées avant publication.

Oui, à condition de coller l'erreur exacte de la console à côté du code. Les erreurs de synchronisation, comme l'exécution d'un script avant l'existence de l'élément, sont parmi les plus faciles à identifier pour un assistant.

Résumez cet article avec :