Simplification

Simplification - HTML/CSS - Programmation

Marsh Posté le 24-07-2005 à 19:28:38    

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

Reply

Marsh Posté le 24-07-2005 à 19:28:38   

Reply

Marsh Posté le 24-07-2005 à 19:57:06    

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
Reply

Marsh Posté le 24-07-2005 à 20:20:34    

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
Reply

Marsh Posté le 24-07-2005 à 20:36:59    

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

Reply

Marsh Posté le 24-07-2005 à 20:51:54    

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
Reply

Marsh Posté le 24-07-2005 à 21:00:24    

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

Reply

Marsh Posté le 24-07-2005 à 21:20:28    

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
Reply

Marsh Posté le 24-07-2005 à 21:51:11    

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

Reply

Marsh Posté le 24-07-2005 à 22:02:52    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed