Pourquoi tant de haine!??? - Programmation
Marsh Posté le 19-02-2002 à 11:02:24
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?
Marsh Posté le 19-02-2002 à 11:02:27
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?
Marsh Posté le 19-02-2002 à 11:04:01
DragonSphax a écrit a écrit : var a = document.mailto.Total.value; a += 0,5; return a; |
Il me sort :
0.50.50.50.5...
Marsh Posté le 19-02-2002 à 11:42:19
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.
Marsh Posté le 19-02-2002 à 11:50:34
youdontcare a écrit a écrit : 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. |
ha je savais bien ke ct a cause de ta variable document.mailto.Total.value que ca merdiat...mais je connait pas trop je javascript....
merci a youdontcare pour cette info..
Marsh Posté le 19-02-2002 à 11:50:58
youdontcare a écrit a écrit : 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. |
Il me sort un "NaN"....
Marsh Posté le 19-02-2002 à 11:56:54
youdontcare a écrit a écrit : que vaut document.mailto.Total.value ? (à l'espace près) |
En fait, ce que j'essaie (désespéremment?) de faire : lorsque je cliques sur certains checkbox, m'incrémenter automatiquement par pas de 0,5 la valeur du champ "Total" de mon formulaire.
Visiblement, pas défaut, c'est la valeur vide "".
[jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo]
Marsh Posté le 19-02-2002 à 12:00:19
Thocan a écrit a écrit : En fait, ce que j'essaie (désespéremment?) de faire : lorsque je cliques sur certains checkbox, m'incrémenter automatiquement par pas de 0,5 la valeur du champ "Total" de mon formulaire. Visiblement, pas défaut, c'est la valeur vide "". |
he bien déjà met une valeur par défaut réelle.
sinon tu testes ça en code :
var v = parseFloat(document.mailto.Total.value);
if (isNaN(v)) v = 0;
v += 0.5;
document.mailto.Total.value = v;
Marsh Posté le 19-02-2002 à 12:04:52
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
Marsh Posté le 19-02-2002 à 12:07:02
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 ...
Marsh Posté le 19-02-2002 à 12:07:55
<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!
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...
Marsh Posté le 19-02-2002 à 12:18:56
Ok, je vais essayer...
--------------------------------
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!
Marsh Posté le 19-02-2002 à 12:23:35
[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.
Marsh Posté le 19-02-2002 à 12:26:29
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.
Marsh Posté le 19-02-2002 à 12:31:31
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
Marsh Posté le 19-02-2002 à 12:34:18
<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).
Marsh Posté le 19-02-2002 à 12:40:28
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...
Marsh Posté le 19-02-2002 à 12:42:04
le temps de retard ? pour ce genre de trucs ça devrait être instantané !
Marsh Posté le 19-02-2002 à 12:45:32
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...
Marsh Posté le 19-02-2002 à 12:46:34
Ha ok, je sais pourquoi : c'est le onChange qui fait ça.
Avec onClick, ça se passe normalement.
Marsh Posté le 19-02-2002 à 13:50:32
Vi, ça fonctionne nickel !
Un graaaaaaand merci pour ton aide!
[jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo]
Marsh Posté le 19-02-2002 à 15:01:53
Tiens... de nouveau un problème (m'aurait étonné... )
------------------------
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...
Marsh Posté le 19-02-2002 à 15:14:05
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]
Marsh Posté le 19-02-2002 à 15:18:21
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.
Marsh Posté le 19-02-2002 à 15:22:28
haaa ! c'est tout de suite plus simple quand tu expliques
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.
Marsh Posté le 19-02-2002 à 15:41:14
Trop bien!
C'est même plus drôle, là! Tout semble si facile...
J'aurai p'tet dû me mettre à la programmation, moi! Ca m'aurait sûrement aidé...
Merci encore une fois...
Marsh Posté le 19-02-2002 à 10:51:07
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!