| |||||
| Dernière réponse | |
|---|---|
| Sujet : Pourquoi tant de haine!??? | |
| youdontcare | :D |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| youdontcare | :D |
| Thocan | Trop bien! :jap: C'est même plus drôle, là! Tout semble si facile... :D J'aurai p'tet dû me mettre à la programmation, moi! Ca m'aurait sûrement aidé... :lol: Merci encore une fois... :love: |
| youdontcare | haaa ! c'est tout de suite plus simple quand tu expliques :D
ce n'est pas faisable en 'vanilla' javascript, il faut en fait construire le nom de la variable dans une string et la passer à eval() qui va la récupérer (eval() éxécute du code javascript dans une string, donc lui passer le nom d'un élément va chopper l'élément en question). donc : var str = 'document.mailto.Total' + box; // si box vaut '01' et que tu fais un alert(str), tu dois obtenir document.mailto.Total01 // maintenant, tu récupères l'objet : var n = eval(str); // en faisant alert(n.value) tu dois obtenir la valeur de l'input Total01 // à partir de là, tu n'as plus qu'à utiliser ton code standard : var w = parseFloat(n.value); if (isNaN(w)) w = 0; etc. |
| Thocan | En fait, la fonction doit être lancée sur différents champs (TotalN : Total1, Total2 etc...)
Donc je voulais tout réunir en une seule ligne, plutôt que de faire des if successifs (qui marchent, j'ai testé). Donc ma fonction est appelée avec box = numéro du Total concerné (ex : 10 pour Total10) Je veux donc que la fonction fasse le parseFloat sur Total10, mais le 10 est généré par la varaible box. Effectivement, j'ai obtenu une concatenation (ce que je voulais), ie "document.mailto.Total10", mais la suite ne fonctionne pas. :heink: :D |
| youdontcare | var w = document.mailto.Total + box; document.mailto.Total est un pointeur vers l'input de nom mailto box = ? tu essayes d'additionner un pointeur et autre chose, ça ne peut que planter, au mieux concaténer deux strings (les deux représentations internes des objets) pour donner qq chose comme '[object]?' donc : qu'est-ce que tu veux faire ? pour récupérer une valeur float d'un input, tu DOIS passer par le parseFloat(....value) puis le test isNaN(). ensuite tu peux travailler avec la valeur. [jfdsdjhfuetppo]--Message édité par youdontcare--[/jfdsdjhfuetppo] |
| Thocan | Tiens... de nouveau un problème (m'aurait étonné... :sarcastic: )
------------------------ function ajout_total(test,box) { var w = document.mailto.Total + box; var u = parseFloat(w.value); if (isNaN(u)) u = 0; if (test==true) u += 0.5; if (test==false) u -= 0.5; return u; } -------------------- Cette fonction marche très bien si je mets 'Total + box' en fixe (par exemple Total10), mais pas lorsque je veux lui associer une variable. Visiblement w.value est mal compris... |
| youdontcare | :hello: |
| Thocan | Vi, ça fonctionne nickel ! :bounce:
Un graaaaaaand merci pour ton aide! :love: [jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo] |
| youdontcare | c'est bon alors ? |
| Thocan | Ha ok, je sais pourquoi : c'est le onChange qui fait ça.
Avec onClick, ça se passe normalement. |
| Thocan | Ben le résultat de la fonction n'est affiché qu'après un autre click (n'importe où sur la page)
je sais pas pourquoi... |
| youdontcare | le temps de retard ? pour ce genre de trucs ça devrait être instantané ! |
| Thocan | Yeap ça fonctionne!
Je pense pouvoir m'en sortir avec tout ça... Il me reste plus, je crois, que le temps de retard à l'affichage, mais je doute qu'il existe une solution... :( |
| Thocan | ok, merci, je vais essayer... :jap: |
| youdontcare | <input type='checkbox' onclick='sendValue(this.checked)'>
avec sendValue qui ressemble à : function sendValue(s) { document.mailto.Total.value = s; } par exemple ... tu n'es pas obligé de passer par une fonction (mais je préfère). |
| Thocan | Vu que je suis au boulot, je vais avoir du mal à te filer le fichier...
Par contre, et après je te laisse tranquille ( ;) ), sais-tu comment envoyer dans la fonction OnClick (ou une autre) le statut de la checkbox? (checked ou unchecked) Merci |
| youdontcare | tu devrais plutôt sortir le code html sorti par php. ceci dit, je n'ai jamais utilisé onChange="Total.value=ajout()"> . * j'utilise habituellement onpropertychange (microsoft only par contre) * Total.value = xxx n'est peut-être pas compris, essaye document.mailto.Total.value = xxx ou mieux, file un lien sur une page qui duplique le problème. |
| Thocan | [citation
Par contre, ce qui est bizarre, c'est que la fonction ne marche que lors du deuxième checkbox cliqué. Le premier ne fait rien... :??: [/citation] En fait, la fonction est bien activée, mais le résultant n'est pas affiché tant qu'une autre action n'a pas été faite. Chiant, ça. :( |
| Thocan | Ok, je vais essayer... :D -------------------------------- J'ai ma fonction ajout : <script> function ajout() { var v = parseFloat(document.mailto.Total.value); if (isNaN(v)) v = 0.5; v += 0.5; return v; } </script> ------------------------------- Ensuite, mes checkbox sont créées en php : <input type=\"checkbox\" name=J".$i."AM onChange=\"Total.value=ajout()\"><input type=\"checkbox\" name=J".$i."PM value=0> Un grand merci pour ton aide! ;) |
| youdontcare | montre un peu ton code, je suis pas devin :D |
| Thocan | <script>
function ajout() { var v = parseFloat(document.mailto.Total.value); if (isNaN(v)) v = 0; v += 0.5; return v; } </script> ---------------------- Ce code là marche! Merci! :bounce: Par contre, ce qui est bizarre, c'est que la fonction ne marche que lors du deuxième checkbox cliqué. Le premier ne fait rien... :??: |
| youdontcare | il n'y a pas de variable 'value' pour les checkbox. dans un input texte, 'value' est la valeur du champ. dans une checkbox, 'checked' indique si on a coché la checkbox. c'est mutuellement exclusif je pense ... |
| Thocan | Pour les checkbox, y'a les propriétés :
- name : ok, je comprends... :) - value - checked Quelle est la différence entre les deux derniers? Sinon, je teste ton code |
| youdontcare |
he bien déjà met une valeur par défaut réelle.
|
| Thocan |
[jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo] |
| youdontcare | que vaut document.mailto.Total.value ? (à l'espace près) |
| Thocan |
|
| dragonsphax |
|
| youdontcare | var a = parseInt(document.mailto.Total.value) + 0.5; oui, le fait que '+' soit utilisé pour l'addition et la concaténation de strings est assez chiant. |
| Thocan | javascript only... :D |
| Thocan |
|
| Thocan | vi, j'ai déjà essayé.
Apparemment, il doit me détecter mon 'a' comme une chaine de texte. Comment faire pour le définir comme un nombre? |
| dragonsphax | var a = document.mailto.Total.value;
a += 0,5; return a; ---> si document.mailto.Total.value vaut 0 c normal que ca te retourne toujours 0,5....t'es sur de ton nom de var la? |
| dragonsphax | t'as essayer en faisant a=a+0.5 deja???? |
| Thocan | Pourquoi, mais pourquoi donc cette fonction s'obstine-t-elle à me concaténer mes valeurs plutôt que mes aditionner??? :??: --------------------------- <script> function ajout() { var a = document.mailto.Total.value; a += 0,5; return a; } </script>"; --------------------------- Ca me donne : 0,50,50,5... Please Help! C'est assez urgent! :sweat: |




