Problème de variable Javascript
Fermé
BlackYoup
-
3 déc. 2012 à 20:16
BlackYoup Messages postés 181 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 10 juin 2014 - 4 déc. 2012 à 11:45
BlackYoup Messages postés 181 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 10 juin 2014 - 4 déc. 2012 à 11:45
A voir également:
- Problème de variable Javascript
- Telecharger javascript - Télécharger - Langages
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Variable TEMP ✓ - Forum Windows 10
7 réponses
Utilisateur anonyme
4 déc. 2012 à 11:09
4 déc. 2012 à 11:09
Trouvé :)
Je suppose que quelqu'un d'habitué au Javascript l'aurait vu plus vite, mais je n'ai pas tellement l'habitude.
Le problème, c'est que tes variables sont des chaînes de caractères et non pas des nombres. Quand tu les initialises "à la main", ce sont des nombres et les comparaisons se font bien comme tu veux.
Quand elles viennent d'un formulaire, ce sont des textes et la comparaison est alphabétique. Donc '8' est plus grand que '10' et tu n'entres pas dans ta boucle...
Il suffit de convertir les chaînes en nombres :
Je suppose que quelqu'un d'habitué au Javascript l'aurait vu plus vite, mais je n'ai pas tellement l'habitude.
Le problème, c'est que tes variables sont des chaînes de caractères et non pas des nombres. Quand tu les initialises "à la main", ce sont des nombres et les comparaisons se font bien comme tu veux.
Quand elles viennent d'un formulaire, ce sont des textes et la comparaison est alphabétique. Donc '8' est plus grand que '10' et tu n'entres pas dans ta boucle...
Il suffit de convertir les chaînes en nombres :
for(var i = parseInt(xbox360Nbr); i < parseInt(pcNbr); i++)
Utilisateur anonyme
Modifié par TherMaind le 3/12/2012 à 20:50
Modifié par TherMaind le 3/12/2012 à 20:50
lol tu peut pas faire un boucle de ce genre :
tu devrais plutôt essayer ça :
Voilà, en espérant t'avoir aidé.
for(i = xbox360Nbr, b = pcNbr; i < b; i++)
tu devrais plutôt essayer ça :
b=pcNbr; for (var i=xbox360Nbr; i<b;i++){ var deleteChecked = document.consoleCheckBoxes[i]; deleteChecked.checked = false; }
Voilà, en espérant t'avoir aidé.
Oui, en effet, mais c'est une erreur de ma part, j'ai changé mon script avant le c/c, le i était définis plus haut, je remet ici mon bloc actuel, dans lequel ca ne marche toujours pas :)
Je tiens aussi à préciser que ni la console javascript de firefox, chrome, opéra ou jsbin.com n'ont détecté d'erreurs dans mon script, je ne comprend absolument pas :-(
else if(nbrCheckedCategorie == pcNbr) { for(var i = xbox360Nbr; i < pcNbr; i++) { var deleteChecked = document.consoleCheckBoxes[i]; deleteChecked.checked = false; } }
Je tiens aussi à préciser que ni la console javascript de firefox, chrome, opéra ou jsbin.com n'ont détecté d'erreurs dans mon script, je ne comprend absolument pas :-(
Utilisateur anonyme
Modifié par le père. le 4/12/2012 à 00:22
Modifié par le père. le 4/12/2012 à 00:22
Bonsoir
Non, ce n'était pas une erreur, tu avais parfaitement le droit d'écrire ta boucle for comme ça, même si c'était inutilement compliqué.
Ajoute un alert (nbrCheckedCategorie + " " +xbox360Nbr+" " +pcNbr); pour être bien sûr des valeurs de tes variables.
Non, ce n'était pas une erreur, tu avais parfaitement le droit d'écrire ta boucle for comme ça, même si c'était inutilement compliqué.
Ajoute un alert (nbrCheckedCategorie + " " +xbox360Nbr+" " +pcNbr); pour être bien sûr des valeurs de tes variables.
BlackYoup
Messages postés
181
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
10 juin 2014
20
4 déc. 2012 à 09:19
4 déc. 2012 à 09:19
Les valeurs sont bien celles attendues, alert() me retourne 10 8 10
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
aomann
Messages postés
51
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
4 décembre 2012
2
4 déc. 2012 à 03:30
4 déc. 2012 à 03:30
Salut,
C'est faux. C'est possible en JavaScript et en plusieurs autres langages.
Mais, je dois avouer que dans se cas, ce n'est vraiment pas la bonne façon.
C'est faux. C'est possible en JavaScript et en plusieurs autres langages.
Mais, je dois avouer que dans se cas, ce n'est vraiment pas la bonne façon.
BlackYoup
Messages postés
181
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
10 juin 2014
20
4 déc. 2012 à 09:15
4 déc. 2012 à 09:15
Oui, mais je suis rendu à tester n'importe quoi maintenant, c'était une erreur de c/c de ma part à ce moment.
Utilisateur anonyme
4 déc. 2012 à 09:43
4 déc. 2012 à 09:43
Ajoute un alert(i); au début de ta boucle (avant var deleteChecked ...)
Es-tu sûr que consoleCheckBoxes[8] et consoleCheckBoxes[9] existent bien ? Leur création est-elle codée "en dur" ou bien générée par un script ?
Es-tu sûr que consoleCheckBoxes[8] et consoleCheckBoxes[9] existent bien ? Leur création est-elle codée "en dur" ou bien générée par un script ?
BlackYoup
Messages postés
181
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
10 juin 2014
20
4 déc. 2012 à 10:14
4 déc. 2012 à 10:14
Merci de ta réponse, mais le problème est que la boucle ne s'éxécute même pas ! Impossible d'y rentrer et donc de faire un alert() dedans :/
Pourtant comme dis plus haut, mes 3 autres boucles for() s'éxécutent normalement. Sinon, oui, consoleCheckBoxes[8] et consoleCheckBoxes[9] existent bien, cela va de consoleCheckBoxes[0] à consoleCheckBoxes[12]. Elles sont créées par une boucle php. Une idée ?
else if(nbrCheckedCategorie == pcNbr) { alert('out for'); // Affiche Out for alert(nbrCheckedCategorie + " " + xbox360Nbr + " " + pcNbr); // Affiche 10 8 10 for(var i = xbox360Nbr; i < pcNbr; i++) { alert('in for'); // N'affiche rien, impossible de rentrer dans la boucle var deleteChecked = document.consoleCheckBoxes[i]; deleteChecked.checked = false; } }
Pourtant comme dis plus haut, mes 3 autres boucles for() s'éxécutent normalement. Sinon, oui, consoleCheckBoxes[8] et consoleCheckBoxes[9] existent bien, cela va de consoleCheckBoxes[0] à consoleCheckBoxes[12]. Elles sont créées par une boucle php. Une idée ?
BlackYoup
Messages postés
181
Date d'inscription
mardi 4 décembre 2012
Statut
Membre
Dernière intervention
10 juin 2014
20
4 déc. 2012 à 10:20
4 déc. 2012 à 10:20
Si je met les valeurs en dur à la place de mes variables dans ma boucle for, elle s'exécute très bien et j'ai le résultat que je souhaite, le problème se situe donc vraiment au niveau de l'initialisation de la boucle ou même de la variable pcNbr voire xbox360Nbr (qui fonctionne très bien pour ma boucle N°2)
4 déc. 2012 à 11:17
Mais c'est quand même étrange, je les avais déja mises en int une fois, lors d'un test et ca n'avais pas marché, j'avais donc exclu cette option, de plus que mes autres for() étant aussi en string, pour moi ca devais marcher, je ne savais pas qu'il se basait sur une comparaison alphabétique :)
Merci beaucoup, c'est vrai que cette erreur est bien stupide :)
Bonne journée !
4 déc. 2012 à 11:20
4 déc. 2012 à 11:42
4 déc. 2012 à 11:45