begin process at 2012 05 29 06:49:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

for et while dans une même fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

for et while dans une même fonction

mercredi 27 janvier 2010 à 23:08:46 | for et while dans une même fonction

Masterkic

Bonjour a tous,

voici mon idée: j'ai fait une fonction javascript qui en théorie me permet de suprimé dynamiquement dans une page html "une option" qui se retrouve dans plusieur select identique ex: je choisi "2" dans le premier select et l'option "2" se suprime dans chacun de tout mes autres select de la page dans le deuxieme je choisis "8" et l'option ayant la valeur "8" se suprime de tout les select. Le but de l'exercise ici est de crée plusieur select et de ne jamais avoir deux select avec la même option de selectionne en meme temps.

Voici mon code :
Code Javascript :
function seloptq(choice){
	var choiceid = choice.id;
	for (var q = 1; q <= 15; q++){
		var check = 'q'+q;
		var optlist=document.getElementById(check);
		var optlength=optlist.options.length
		if (choiceid !== check){
			var myselect=document.getElementById(check);
			var i = 0;
			while (i <= optlength){
				var cvalue = myselect.options[i].value;
				var choose = choice.value;
				if (choose == cvalue){
					alert (i+" "+check);
					myselect.remove(i);
				}
				i++;
			}
		}
	}
}


Voici mon problème : La boucle "for" pour q fonctionne elle se rend jusqu'au while... le while s'execute une premiere fois tout va bien jusqu'a se que while se termine... alors la je m'attendais à ce que q ++ augment de 1 et que le for recommence sa boucle pour réexecuter le while jusqu'a ce que le for atteigne sa valeur maximal c'est a dire 15, mais il arrete tout à la premiere "loop". PS: Je suis amateur alors désoler si mon code à l'air de rien.

Merci beaucoup a ceux qui pourront me donner des pistes de solution !
jeudi 28 janvier 2010 à 18:52:31 | Re : for et while dans une même fonction

PetoleTeam

Membre Club
Bonjour,
1/ pourquoi utiliser un WHILE pour ta boucle imbriquée et non pas un FOR
2/ ATTENTION, tu écris var optlength=optlist.options.length, mais quand tu en supprime une optlength reste identique mais pas la valeur qu'elle est prétendue représenter, optlist.options.length est dynamiquement modifiée.
;O)
lundi 1 février 2010 à 20:10:01 | Re : for et while dans une même fonction

Masterkic

1- J'ai modifier mon code afin d'utiliser un for et non pas un while et cela ma donné exactement le même résultat. J'avais utilisé le while pour je me souviens plus quelle raison.

2- Maintenant le 2e point que tu apportes me semble vrai, mais je ne comprends pas en quoi cela pourrait faire en sorte que le script ne s'exécute pas comme je le veux voici mon raisonnement.

Si optlength = "16" lorsque "q = 1" alors "i" ne devrait pas dépasser 16. Maintenant lorsque la 2e boucle for se termine (i = 16) pour la première fois alors normalement "q" devrait incrémenter de 1 pour qu’ainsi "q = 2" alors la optlength redevient "16" puisque optlength est calculer avec les options du select avec le nom "q2" et ainsi de suite jusqu'a ce que q = 15 puisque j'ai 15 select de q1 a q15. (16 étant un nombre x mais qui correspond au nombre d'option de chaque select au départ)

La valeur optlength devrait être 15 uniquement si les 2 boucles se terminent dans leur ensemble sauf pour 1 des selects c'est-à-dire celui de départ auquel la fonction a fait référence la premiere fois, mais dans mon cas la première boucle n'est exécuter qu'une seule fois. Et puis même si optlength a la même valeur tout au long de la fonction ça ne devrait pas altérer mon résultat cela n'est qu'une sécurité pour empêcher que la boucle continue à l'infini et donc dans mon cas elle s'arrete si (i <= au maximum d'option possible).

Tout cela n'est que ma facon de raisonner je suis possiblement complètement en dehors de la traque et c'est pour cela que je vous remercie de m'aider !
mardi 2 février 2010 à 19:04:23 | Re : for et while dans une même fonction

PetoleTeam

Membre Club
Réponse acceptée !
Bonjour,
un petit rappel qui me semble utile
- l'index du premier élément d'un tableau commence à 0 et non à 1
- la longueur d'un tableau est égale au nombre d'éléments de celui ci, MAIS le dernier élément d'un tableau n'a pas pour index longueur_tableau mais longueur_tableau -1.
Exemple :
T_Valeur[0] = 1;
T_Valeur[1] = 2;
T_Valeur[2] = 3;
T_Valeur[3] = 4;
...etc...
T_Valeur[9] = 10;

si je veux afficher le dernier élément il me faut écrire
var T_Longueur = T_Valeur.length; // qui sera égal à 10, 10 éléments stockés dans T_Valeur
Affiche(T_Valeur[T_Longueur -1]); // accès à la 10éme case soit l'index 9

Bon tout cela pour en arrivé au fait que quand tu écris i <= optlength, il y a déjà faute car en aucun cas i doit être égal à optlength, dans ce cas ton script se mettra en erreur pour élément undefined, i doit rester INFERIEUR à optlength.

Ceci étant dit, lorsque tu supprimes une OPTION, tu te trouves dans le même cas de débordement, la console d'erreur doit d'ailleurs t'informer d'une erreur.

Voilà pour résumer il me semble normal que le 1st for et la boucle while se fasse jusqu'au bout avant de planter le script...

Exemple qu'aurait pu être ta fonction
Code Javascript :
//---------------------------
function Remove_Option( obj_){
  var O_Ref = obj_;
  var num = 1;
  //-- utilisation de la méthode while pour ne pas avoir
  //-- a modifier le code en cas de changement du nombre de SELECT
  while( O_Test = document.getElementById( "q" + num++)){  
    if( O_Test != O_Ref){
      //-- utilisation de .length car peut être modifiée en dynamique   
      for( var i = 0; i < O_Test.options.length; i++){
        //-- Test de value
        if( O_Test.options[i].value == O_Ref.value){
          alert( i +" " +O_Test.id);
          O_Test.remove(i);
          // NOTA si l'on est sur qu'il n'y a pas d'autre élément dans le
          // SELECT à supprimer on peut mettre un break qui met fin à la boucle
          break;
          // dans le cas contraire 
          i--;  // réajustement du compteur
        }
      }
    }
  }
}

Voila à toi de jouer...
;O)
mardi 2 février 2010 à 20:20:38 | Re : for et while dans une même fonction

Masterkic

Cela a tellement l'air facile pour vous, merci enormément! Je vais tenter d'apprendre de mon erreur plutot que de copier le code (qui fonctionne cela dit) et de ne pas comprendre ce qui est ecris. Excellent merci encore!
mardi 2 février 2010 à 20:50:28 | Re : for et while dans une même fonction

PetoleTeam

Membre Club
Cela a tellement l'air facile pour vous,
cela le deviendra vite pour toi, si tu t'en donnes la peine...

J'ai omis de signaler que si tu mets un break pour stopper la boucle dans ce cas tu peux utiliser un variable initialisée avec la longueur du tableau, évitant ainsi l'évaluation à chaque itération.
Code Javascript :
    if( O_Test != O_Ref){
      //-- utilisation d'une variable initialisée
      var Nbr = O_Test.options.length;
      for( var i = 0; i < Nbr; i++){
        if( O_Test.options[i].value == O_Ref.value){
          alert( i +" " +O_Test.id);
          O_Test.remove(i);
          break;
        }
      }
    }

;O)


Cette discussion est classée dans : while, var, select, for, check


Répondre à ce message

Sujets en rapport avec ce message

la boucle for qui rend fou [ par kavod ] Peut-être qu'à force de me casser la tête dessus je ne vois plus l'essentiel... mais j'ai un problème avec une boucle for et je ne vois vraiment pas d sondage [ par thekwint ] On m'a toujours dit qu'il n'y avait pas moyen de créer des sondages avec du javascript. C'est pas entierement faux. J'ai quand même tenté qqch aujourd Appel de fonction via un évènement OnClick ? [ par bside8 ] Bonjour,tout commence par un formulaire PHP dans lequel mes utilisateurs doivent saisir une date.Dans le champ concerné se trouve un gestionnaire d'év demande d'aide sur mon script rotatif [ par bolix ] Lut a tous,G modifier l'emplacement d'une photo sur mon script et celui ci ne marche +.si kelkun pouvez voir se qui ne va pas se serait génial. Ca doi Problème de sélection dans un select multiple [ par pymm ] Bonjour à tous, J'ai un problème sur l'une de mes pages. Au rechargement de la page, je remplis les champs d'un select multiple grace a une fonctio Petit script pour des zones de texte dynamiques [ par clenio ] hélloJe suis en train de faire mes premiers pas (et premières armes) en php et javascript.Mon code récupère la valeur du SELECT et doit afficher en co Problème variable [ par ClMaverick ] Bonjour,     Je débute en javascript et j'ai un petit problème avec mon code. Ce code me permet d'établir un code suivant l'endroit où je clique. Sa tableau avec javascript et php [ par DROMOS ] bonjour,Merci d'avance de prendre le temps de lire ma demande.Voilà je vous explique, j'ai un formulaire qui comporte trois champs. le premier champ r Affecter valeur dans un select [ par laubro ] Bonjourbesoin d'un truc tout bêtevoila, j'ai un select contenant les années (pour un formulaire = 3 années) ce formulaire pouvant être copié / collé p Recherche toutes occurences caractères dans string [ par forcels ] Hello,j'aimerais retrouver toutes les occurences du caractère ":" se trouvant dans un string. J'ai pensé à la méthode indexOf, mais elle ne retourne q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,983 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales