Recupérer la valeur de l'index précédent [Select + onchange] - HTML/CSS - Programmation
Marsh Posté le 04-07-2006 à 23:20:55
Soit elle est vraiment naze ma question soit elle est vraiment difficile
Marsh Posté le 04-07-2006 à 23:29:27
tu dois pouvoir le faire en stockant l'index dans une variable globale
je vois que ca
Marsh Posté le 05-07-2006 à 09:25:10
flo850 a écrit : tu dois pouvoir le faire en stockant l'index dans une variable globale |
c'est exactement ce qu'il expliquait
Si l'idée de la variable te plait pas, tu peux aussi la faire DOM-Staïlle, en rajoutant un attribut à ton select qui contiendrait l'ancienne valeur... Mais bon ça revient strictement au même
Marsh Posté le 05-07-2006 à 11:11:07
Non l'idee de la variable ne me deplait pas, au contraire. Je demandais a tout hasard car je connais tres peu le javascript et je me disais que peut etre il existait un attribut pour faire cela et que je ne connaitrais pas
J'ai fait avec la variable est ca marche bien, merci pour votre confirmation
Marsh Posté le 05-07-2006 à 20:58:11
codé en 5 minutes à l'arrache :
Code :
|
Tu peux mettre autant d'articles que tu veux, mais je ne pense pas que tu atteindra les 100 articles dans ta page, et même avec 100 articles, on est très loin de ramer.
et ce que tu cherche toi à faire est possible mais super chiant pour l'utilisateur, et ne risque de fonctionner que si l'utilisateur utilise sa souris (j'ai déjà l'algo en tête). Mais ce n'est pas forcément super top.
Alors qu'une simple boucle ca suffit
sinon avec la version de test du fichier :
Tests : sous IE avec 780 selects il faut 500ms pour executer la fonctions :|
sous FF, moins de 100 ms :|
la fonction dans sa version de test :
Code :
|
Marsh Posté le 05-07-2006 à 21:13:07
Mais sinon pour répondre à ta question (du coup mon code au dessus tu peux le jeter) :
Code :
|
explication : Je pars du principe que par défaut l'ancienne valeur d'un select c'est zero ou par défaut la valeur selectionee au chargement de la page, ou si tu l'as initialisé dans la page c'est :
<select lastvalue="valeurselectionne">
du coup lorsque tu changes la valeur du select, tu as l'ancienne valeur, et la nouvelle valeur sélectionnée va devenir ancienne valeur à son tour. entre temps on fait l'operation simple decrite dans les commentaires du code.
Marsh Posté le 05-07-2006 à 21:18:31
Sympa la maniere de selectionner tous les select les uns apres les autres (pour vous ca doit paraitre trivial mais comme je l'ai dit je m'y connais tres peu en javascript et je ne connaissais pas cette methode).
Je vais tester les 2 versions.
Merci Gatsu35.
Marsh Posté le 05-07-2006 à 21:53:04
j'ai dit tu peux jeter ma Première fonction à la poubelle (celle qui va checker tous les selects)
Ici c'est la solution que tu recherches, avoir une ancienne valeur, là tu peux mettre 15000 selects c'est ultra rapide
Tiens j'ai amélioré le bouzin, parce que sous Opera, ce con me rendait pas forcément des nombres malgré un parseInt, cette fois-ci je recupère vraiment des nombres.
Code :
|
Marsh Posté le 07-07-2006 à 12:25:21
Je me suis servi de ta premiere fonction (en la modifiant un peu) pour un autre script
Marsh Posté le 07-07-2006 à 12:59:01
tu fais ce que tu veux mais la deuxieme répond à ton besoin et est beaucoup plus propre que la premiere
Marsh Posté le 07-07-2006 à 13:05:30
Oui mais le contexte n'est pas le meme la ou je l'ai utilisé et il y va tres bien.
Ta 2eme version je m'y attaque ce soir pour la mettre dans le script qui est a l'origine de ce topic
Marsh Posté le 04-07-2006 à 12:44:49
Bonjour,
J'ai plusieurs select contenant chacun une liste d'articles et je veux faire le total du cout de chaque article (c'est comme une facture).
J'ai 2 solutions pour faire la somme: soit tout recalculer a chaque fois, soit ajouter/retrancher au total le prix de l'article en question. J'ai choisi la 2eme solution car ca devrait etre moins lourd si il y a beaucoup d'article.
Le probleme survient lorsque l'utilisateur enleve un article, c'est a dire qu'il choisit l'option "vide" dans le select. A ce moment j'appelle ma fonction qui fait la mise a jour mais j'ai le nouveau index (avec this.options[this.selectedIndex].value) et je ne sais plus comment retrouver l'index de l'objet qui etait selectionné juste avant.
La seul solution que je vois c'est de faire une variable par select et d'y stocké la valeur de l'index en cours. Je la mets a jour une fois que j'ai fait mon calcul. Vous voyez une autre solution?
Merci pour vous conseils