Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2132 connectés 

  FORUM HardWare.fr
  Programmation

  Pourquoi tant de haine!???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pourquoi tant de haine!???

n°102186
Thocan
La loi du silence
Posté le 19-02-2002 à 10:51:07  profilanswer
 

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:

mood
Publicité
Posté le 19-02-2002 à 10:51:07  profilanswer
 

n°102192
dragonspha​x
Posté le 19-02-2002 à 11:00:59  profilanswer
 

t'as essayer en faisant a=a+0.5 deja????

n°102193
dragonspha​x
Posté le 19-02-2002 à 11:02:24  profilanswer
 

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?

n°102194
Thocan
La loi du silence
Posté le 19-02-2002 à 11:02:27  profilanswer
 

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?

n°102195
Thocan
La loi du silence
Posté le 19-02-2002 à 11:04:01  profilanswer
 

DragonSphax a écrit a écrit :

var a = document.mailto.Total.value;
a += 0,5;    
return a;
 




 
Il me sort :
0.50.50.50.5...

n°102200
Thocan
La loi du silence
Posté le 19-02-2002 à 11:07:45  profilanswer
 

javascript only...  :D

n°102216
youdontcar​e
Posté le 19-02-2002 à 11:42:19  profilanswer
 

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.

n°102221
dragonspha​x
Posté le 19-02-2002 à 11:50:34  profilanswer
 

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.. [:the radec]

n°102223
Thocan
La loi du silence
Posté le 19-02-2002 à 11:50:58  profilanswer
 

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"....  :??:

n°102224
youdontcar​e
Posté le 19-02-2002 à 11:52:22  profilanswer
 

que vaut document.mailto.Total.value ? (à l'espace près)

mood
Publicité
Posté le 19-02-2002 à 11:52:22  profilanswer
 

n°102229
Thocan
La loi du silence
Posté le 19-02-2002 à 11:56:54  profilanswer
 

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]

n°102232
youdontcar​e
Posté le 19-02-2002 à 12:00:19  profilanswer
 

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;

n°102234
Thocan
La loi du silence
Posté le 19-02-2002 à 12:04:52  profilanswer
 

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

n°102236
youdontcar​e
Posté le 19-02-2002 à 12:07:02  profilanswer
 

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 ...

n°102237
Thocan
La loi du silence
Posté le 19-02-2002 à 12:07:55  profilanswer
 

<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...  :??:

n°102238
youdontcar​e
Posté le 19-02-2002 à 12:11:00  profilanswer
 

montre un peu ton code, je suis pas devin :D

n°102246
Thocan
La loi du silence
Posté le 19-02-2002 à 12:18:56  profilanswer
 

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!  ;)

n°102248
Thocan
La loi du silence
Posté le 19-02-2002 à 12:23:35  profilanswer
 

[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.  :(

n°102252
youdontcar​e
Posté le 19-02-2002 à 12:26:29  profilanswer
 

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.

n°102256
Thocan
La loi du silence
Posté le 19-02-2002 à 12:31:31  profilanswer
 

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

n°102257
youdontcar​e
Posté le 19-02-2002 à 12:34:18  profilanswer
 

<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).

n°102259
Thocan
La loi du silence
Posté le 19-02-2002 à 12:38:27  profilanswer
 

ok, merci, je vais essayer...  :jap:

n°102260
Thocan
La loi du silence
Posté le 19-02-2002 à 12:40:28  profilanswer
 

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...  :(

n°102262
youdontcar​e
Posté le 19-02-2002 à 12:42:04  profilanswer
 

le temps de retard ? pour ce genre de trucs ça devrait être instantané !

n°102264
Thocan
La loi du silence
Posté le 19-02-2002 à 12:45:32  profilanswer
 

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...

n°102265
Thocan
La loi du silence
Posté le 19-02-2002 à 12:46:34  profilanswer
 

Ha ok, je sais pourquoi : c'est le onChange qui fait ça.
Avec onClick, ça se passe normalement.

n°102267
youdontcar​e
Posté le 19-02-2002 à 12:53:19  profilanswer
 

c'est bon alors ?

n°102292
Thocan
La loi du silence
Posté le 19-02-2002 à 13:50:32  profilanswer
 

Vi, ça fonctionne nickel !  :bounce:
 
Un graaaaaaand merci pour ton aide!  :love:

 

[jfdsdjhfuetppo]--Message édité par Thocan--[/jfdsdjhfuetppo]

n°102298
youdontcar​e
Posté le 19-02-2002 à 13:57:34  profilanswer
 

:hello:

n°102334
Thocan
La loi du silence
Posté le 19-02-2002 à 15:01:53  profilanswer
 

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...

n°102336
youdontcar​e
Posté le 19-02-2002 à 15:14:05  profilanswer
 

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]

n°102339
Thocan
La loi du silence
Posté le 19-02-2002 à 15:18:21  profilanswer
 

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

n°102342
youdontcar​e
Posté le 19-02-2002 à 15:22:28  profilanswer
 

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.

n°102354
Thocan
La loi du silence
Posté le 19-02-2002 à 15:41:14  profilanswer
 

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:

n°102365
youdontcar​e
Posté le 19-02-2002 à 15:49:53  profilanswer
 

:D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Pourquoi tant de haine!???

 

Sujets relatifs
Plus de sujets relatifs à : Pourquoi tant de haine!???


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)