Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2606 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Simplification

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Simplification

n°1158422
bepimaco
Festina lente
Posté le 24-07-2005 à 19:28:38  profilanswer
 

Bonjour,
 
Je pense qu'il existe un moyen de simplifier ceci :
 

Code :
  1. if(document.getElementById('champ1_0').checked == false &
  2.    document.getElementById('champ1_1').checked == false &
  3.    document.getElementById('champ1_2').checked == false &
  4.    document.getElementById('champ1_3').checked == false &
  5.    document.getElementById('champ1_4').checked == false &
  6.    document.getElementById('champ1_5').checked == false &
  7.    document.getElementById('champ1_6').checked == false &
  8.    document.getElementById('champ1_7').checked == false &
  9.    document.getElementById('champ1_8').checked == false &
  10.    document.getElementById('champ1_9').checked == false &
  11.    document.getElementById('champ1_10').checked == false){
  12.      alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" );
  13.      verification = 0;
  14.    }


 
Une boucle serait la solution, mais je suis encore tout débutant, et ne vois pas comment la mettre !
 
Merci
Bepimaco

mood
Publicité
Posté le 24-07-2005 à 19:28:38  profilanswer
 

n°1158433
gatsusat
Posté le 24-07-2005 à 19:57:06  profilanswer
 

Code :
  1. for (var i=0; i<=10; i++){
  2.   if (document.getElementById('champ1_' + i).checked == false) {
  3.      alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" );
  4.      verification = 0;
  5.      break;
  6.   }
  7. }


 
le plus simple serait de mettre tous tes éléments dans un fieldset

Code :
  1. <form>
  2. <fieldset id="champ1">
  3. <input type="checkbox" name="champ1_1">
  4. <input type="checkbox" name="champ1_2">
  5. ...
  6. <input type="checkbox" name="champ1_10">
  7. </fieldset>


 
et le code javascript résultant serait plus simple :  
 

Code :
  1. var MesCheckBox = document.getElementById("champ1" ).getElementsByTagName("INPUT" );
  2. for (var i=0; i<=MesCheckBox.length-1; i++){
  3.   if (MesCheckBox[i].checked == false) {
  4.      alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" ); 
  5.      verification = 0;
  6.      break;
  7.   }
  8. }


Message édité par gatsusat le 24-07-2005 à 20:01:12
n°1158443
webmidipyr​enees
Posté le 24-07-2005 à 20:20:34  profilanswer
 

Je suis vraiment mauvais en javascript mais selon ton code dès qu'une checkbox est décochée l'alerte apparait alors que dans son code l'alerte n'apparait que si toutes les checkbox ne sont pas cochées mais peut être que je me trompe
Moi je verrais plus un truc du style:

Code :
  1. verification=0;
  2. for (var i=0; i<=10; i++){
  3.     if (document.getElementById('champ1_' + i).checked == false) {
  4.        verification = 1;
  5.        break;
  6.     }
  7. }
  8. if(verification==0) {
  9.        alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" ); 
  10. }


 
Si j'ai dis une grosse bêtise je vous prie de m'excuser


Message édité par webmidipyrenees le 24-07-2005 à 20:30:08

---------------
Xavier, administrateur et webmaster de http://www.webmidipyrenees.com
n°1158450
gatsusat
Posté le 24-07-2005 à 20:36:59  profilanswer
 

erf oué C'est un 1 et non un OU du coup il faut plutot une variable qui s'incremente dès que une checkbox est cochée.
 
ton code il revient à faire ce ke j'ai fait lol, attend je te fais ca :  
 

Code :
  1. verification=0;
  2. maxCB = 10
  3. for (var i=0; i<=maxCB; i++){
  4.     if (document.getElementById('champ1_' + i).checked == false) {
  5.        verification++;
  6.     }
  7. }
  8. if(verification!=maxCB) {
  9.        alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" ); 
  10. }


 
on verifie si chaque case est cochée, dès qu'une case est coché on incremente verification de 1.
Si Verification est egal au nombre de checkbox, alors elles sont toutes cochées, sinon ben on affiche le message.
 
C'est pas le fait d'être bon ou pas en Javascript qui joue ici, mais le fait d'avoir une logique de programmation

n°1158459
webmidipyr​enees
Posté le 24-07-2005 à 20:51:54  profilanswer
 

Justement il teste si toutes les cases ne sont pas cochées donc à partir du moment où une des cases est cochées alors c'est bon donc pas besoin de tester si toutes les cases sont cochées.
Mo, code ne revient pas tout à fait au meme que le tien puisque dans le mien à partir du moment où une case est cochée l'alerte n'apparait pas


---------------
Xavier, administrateur et webmaster de http://www.webmidipyrenees.com
n°1158471
gatsusat
Posté le 24-07-2005 à 21:00:24  profilanswer
 

rectification il y a plusieurs manières de reflechir sur la méthode à aborder.
 
d'abord on pose le problème :  
un message d'alerte doit être affiché si aucune des cases n'est cochée
 
et DONC :  
on teste si chaque case est n'est pas cochée, on incrémente une variable qui contient le nombre de cases non cochées, et SI le nombre de case non cochées est égal au nombre maximum de case alors on affiche un message.
ce qui revient à faire ce que j'ai fait juste au dessus avec une petite rectification

Code :
  1. verification=0;
  2. maxCB = 10 
  3. for (var i=0; i<=maxCB; i++){ 
  4.     if (document.getElementById('champ1_' + i).checked == false) {  //Si une case n'est pas cochée
  5.        verification++;  //On incrémente vérification
  6.     } 
  7. //Si aucune case n'a été cochée, verification est égal à maxCB et donc on affiche un message
  8. if(verification==maxCB) { 
  9.        alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" );   
  10. }


 
ou plus simple

n°1158486
webmidipyr​enees
Posté le 24-07-2005 à 21:20:28  profilanswer
 

Désolé gatsusat j'ai fait un bête copier-coller de ton premier code sans corriger la donnée essentielle (==true au lieu de ==false) et le code que je voulais mettre était:

Code :
  1. verification=0;
  2.     for (var i=0; i<=10; i++){
  3.         if (document.getElementById('champ1_' + i).checked == true) {
  4.            verification = 1;
  5.            break;
  6.         }
  7.     }
  8.     if(verification==0) {
  9.            alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" ); 
  10.     }


Mais bon ton code ou le mien je pense que c'est pareil


Message édité par webmidipyrenees le 24-07-2005 à 21:21:05

---------------
Xavier, administrateur et webmaster de http://www.webmidipyrenees.com
n°1158512
gatsusat
Posté le 24-07-2005 à 21:51:11  profilanswer
 

ton code il verifie que au moins une case est cochée, et donc c'est bon lol
 
mais en fait tu n'as pas besoin de découper ton truc comme ca :  
 

Code :
  1. for (var i=0; i<=10; i++){
  2.         if (document.getElementById('champ1_' + i).checked == true) {
  3.            alert("Vous n'avez pas noté les jeux pendant la montée vers Galaron" );
  4.            break;
  5.         }
  6.     }


 
libre ensuite de remplacer le break par un return false, afin de bloquer l'envoi du formulaire

n°1158523
bepimaco
Festina lente
Posté le 24-07-2005 à 22:02:52  profilanswer
 

Merci de vos réponses, maintenant que j'ai un modèle d'application de cette boucle for, je vais pouvoir avancer sur d'autres questions.
 
Bonne soirée


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Simplification

 

Sujets relatifs
Simplification d'expressions mathematiques.Projet : simplification d'une lecture
Simplification racine carre?fonction de simplification de fraction ??
Simplification polygonale post-CSG (+gen de coord de tex) 
Plus de sujets relatifs à : Simplification


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)