Je suis en train de créer une page pour générer une fiche de perso à un
jeu de rôle (INS MV pour les connaisseurs)
J'ai crée une fonction qui permet d'attribuer des points à des
caractéristiques. Cependant, j'ai un soucis avec l'argument de la
fonction d'ajout qui ne semble pas vouloir indiquer le bon element de
mon formulaire.
En fait, mon navigateur me dit que document.monForm.monArgument n'est
pas un objet...
J'ai essayer plusieurs méthode comme concaténer des chaines afin
d'avoir le chemin de objet de formulaire, j'ai passer l'argument ds une
variable que j'ai mis dans mon chemin d'objet de formulaire, mais rien
n'y fait.
Si dessous, mon code actuel... Si quelqu'un pouvait jeter un coup
d'oeil pour me mettre sur une piste de solution... (passke j'ai pas
envie de me taper 6 fonctions ou conditions vu que je veux reutiliser
cette fonction pour les compétences (primaires et secondaires)
suivantes (env. 20...)
function ajout(chp){
document.etape1.chp.value=parseFloat(document.etape1.chp.value)+0.5;
document.etape1.total.value=parseInt(document.etape1.total.value)-2;
if(document.etape1.chp.value>5.5){
alert("Vous ne pouvez pas attribuer plus de points");
document.etape1.chp.value=5.5;
document.etape1.total.value=parseInt(document.etape1.total.value)+2;
}
}
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
var o = eval("document.forms['etape1'].elements['"+chp+"']"); o.value = parseFloat(o.value)+0.5;
et compléter avec la formulation longue pour le reste
var t = document.forms['etape1'].elements['total']; t.value = parseInt(t.value)+2;
document.etape1.chp.value=parseFloat(document.etape1.chp.value)+0.5; document.etape1.total.value=parseInt(document.etape1.total.value)-2; if(document.etape1.chp.value>5.5){ alert("Vous ne pouvez pas attribuer plus de points"); document.etape1.chp.value=5.5; document.etape1.total.value=parseInt(document.etape1.total.value)+2; } }
var o = eval("document.forms['etape1'].elements['"+chp+"']");
o.value = parseFloat(o.value)+0.5;
et compléter avec la formulation longue pour le reste
var t = document.forms['etape1'].elements['total'];
t.value = parseInt(t.value)+2;
document.etape1.chp.value=parseFloat(document.etape1.chp.value)+0.5;
document.etape1.total.value=parseInt(document.etape1.total.value)-2;
if(document.etape1.chp.value>5.5){
alert("Vous ne pouvez pas attribuer plus de points");
document.etape1.chp.value=5.5;
document.etape1.total.value=parseInt(document.etape1.total.value)+2;
}
}
var o = eval("document.forms['etape1'].elements['"+chp+"']"); o.value = parseFloat(o.value)+0.5;
et compléter avec la formulation longue pour le reste
var t = document.forms['etape1'].elements['total']; t.value = parseInt(t.value)+2;
document.etape1.chp.value=parseFloat(document.etape1.chp.value)+0.5; document.etape1.total.value=parseInt(document.etape1.total.value)-2; if(document.etape1.chp.value>5.5){ alert("Vous ne pouvez pas attribuer plus de points"); document.etape1.chp.value=5.5; document.etape1.total.value=parseInt(document.etape1.total.value)+2; } }
etmerci pour ta réponse. J'ai essayer avec les variables : function soust(chp){ //fonction de soustraction
var o=eval("document.etape1."+chp+".value"); var t=eval("document.etape1.total.value"); if(o<2){ alert("Vous ne pouvez pas attribuer plus de points"); o=2; t=t-2; } } cela ne fonctionne pas. Et W$ne me donne pas de message d'erreur...
Et dans mon formulaire, j'ai mis (avec un form et /form apres et avant BODY) : <td width="100"> <input type="text" size="2" value=2 name="Fo"> <input type="button" name="plus" onclick="javascript:soust('Fo')" value="-"> <input type="button" name="plus" onclick="javascript:ajout('Fo')" value="+"> </td>
J'avoue que je coince un peu... Si tu le souhaites : http://tinyspit.free.fr/astuces/insmv/ il s'agit de la 2nde page (apres validation)
Merci (je suis vraiment perdu là).
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Bonjour,
etmerci pour ta réponse.
J'ai essayer avec les variables :
function soust(chp){ //fonction de soustraction
var o=eval("document.etape1."+chp+".value");
var t=eval("document.etape1.total.value");
if(o<2){
alert("Vous ne pouvez pas attribuer plus de points");
o=2;
t=t-2;
}
}
cela ne fonctionne pas. Et W$ne me donne pas de message d'erreur...
Et dans mon formulaire, j'ai mis (avec un form et /form apres et avant
BODY) :
<td width="100">
<input type="text" size="2" value=2 name="Fo">
<input type="button" name="plus" onclick="javascript:soust('Fo')"
value="-">
<input type="button" name="plus" onclick="javascript:ajout('Fo')"
value="+">
</td>
J'avoue que je coince un peu...
Si tu le souhaites : http://tinyspit.free.fr/astuces/insmv/ il s'agit
de la 2nde page (apres validation)
Merci (je suis vraiment perdu là).
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
etmerci pour ta réponse. J'ai essayer avec les variables : function soust(chp){ //fonction de soustraction
var o=eval("document.etape1."+chp+".value"); var t=eval("document.etape1.total.value"); if(o<2){ alert("Vous ne pouvez pas attribuer plus de points"); o=2; t=t-2; } } cela ne fonctionne pas. Et W$ne me donne pas de message d'erreur...
Et dans mon formulaire, j'ai mis (avec un form et /form apres et avant BODY) : <td width="100"> <input type="text" size="2" value=2 name="Fo"> <input type="button" name="plus" onclick="javascript:soust('Fo')" value="-"> <input type="button" name="plus" onclick="javascript:ajout('Fo')" value="+"> </td>
J'avoue que je coince un peu... Si tu le souhaites : http://tinyspit.free.fr/astuces/insmv/ il s'agit de la 2nde page (apres validation)
Merci (je suis vraiment perdu là).
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Hakito
Apres avoir posté le message ci-dessus, j'ai essayer d'améliorer la fonction, j'en suis arrivé à cela (avec des alert pour tracer le résultat) : function soust(chp){
var o=eval("document.etape1."+chp+".value"); alert("var o est créée"); var t=eval("document.etape1.total.value"); alert("var t est créée"); o=o-0.5; var res=eval(o); alert("valeur : "+o); t=t+2; if(o<2){ alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o=2; t=t-2; } else{ alert("je suis ds le else"); o+=0.5; alert(eval(o)); } }
Cette fonction fonctionne (comme quoi ca porte bien son nom), seul émol, la valeur ds le champs ne change pas... étrange non ?
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Apres avoir posté le message ci-dessus, j'ai essayer d'améliorer la
fonction, j'en suis arrivé à cela (avec des alert pour tracer le
résultat) :
function soust(chp){
var o=eval("document.etape1."+chp+".value");
alert("var o est créée");
var t=eval("document.etape1.total.value");
alert("var t est créée");
o=o-0.5;
var res=eval(o);
alert("valeur : "+o);
t=t+2;
if(o<2){
alert("Vous avez atteint la limite d'attribution des points pr cette
caractéristique.");
o=2;
t=t-2;
}
else{
alert("je suis ds le else");
o+=0.5;
alert(eval(o));
}
}
Cette fonction fonctionne (comme quoi ca porte bien son nom), seul
émol, la valeur ds le champs ne change pas... étrange non ?
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
Apres avoir posté le message ci-dessus, j'ai essayer d'améliorer la fonction, j'en suis arrivé à cela (avec des alert pour tracer le résultat) : function soust(chp){
var o=eval("document.etape1."+chp+".value"); alert("var o est créée"); var t=eval("document.etape1.total.value"); alert("var t est créée"); o=o-0.5; var res=eval(o); alert("valeur : "+o); t=t+2; if(o<2){ alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o=2; t=t-2; } else{ alert("je suis ds le else"); o+=0.5; alert(eval(o)); } }
Cette fonction fonctionne (comme quoi ca porte bien son nom), seul émol, la valeur ds le champs ne change pas... étrange non ?
-- HAKITO "y'a pas de tralala, y'a que des résultats"
YD
function soust(chp){
var o=eval("document.etape1."+chp+".value"); var t=eval("document.etape1.total.value"); o=o-0.5; var res=eval(o); alert("valeur : "+o); t=t+2; if(o<2){ alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o=2; t=t-2; } else{ alert("je suis ds le else"); o+=0.5; alert(eval(o)); } }
Cette fonction fonctionne (comme quoi ca porte bien son nom), seul émol, la valeur ds le champs ne change pas... étrange non ?
Absolument pas. Tu écris : o=eval("document.etape1."+chp+".value"); donc o est une valeur de type chaîne, celle renvoyée par la propriété value de l'élément de formulaire et pas un objet.
La façon correcte est de créer une référence vers l'objet, et utiliser au moment opportun ses propriétés. var o, t; o = document.forms.etape1[chp]; //eval ne sert strictement à rien qu'à faire magique ou beau dans ton code ? t = document.forms.etape1.total; o.value -= .5; t.value += 2; if (o.value < 2) {// etc. }
-- Y.D.
function soust(chp){
var o=eval("document.etape1."+chp+".value");
var t=eval("document.etape1.total.value");
o=o-0.5;
var res=eval(o);
alert("valeur : "+o);
t=t+2;
if(o<2){
alert("Vous avez atteint la limite d'attribution des points pr
cette caractéristique.");
o=2;
t=t-2;
}
else{
alert("je suis ds le else");
o+=0.5;
alert(eval(o));
}
}
Cette fonction fonctionne (comme quoi ca porte bien son nom), seul émol,
la valeur ds le champs ne change pas... étrange non ?
Absolument pas. Tu écris :
o=eval("document.etape1."+chp+".value");
donc o est une valeur de type chaîne, celle renvoyée par la propriété value de
l'élément de formulaire et pas un objet.
La façon correcte est de créer une référence vers l'objet, et utiliser au moment
opportun ses propriétés.
var o, t;
o = document.forms.etape1[chp]; //eval ne sert strictement à rien qu'à faire magique ou beau dans ton code ?
t = document.forms.etape1.total;
o.value -= .5;
t.value += 2;
if (o.value < 2) {// etc.
}
var o=eval("document.etape1."+chp+".value"); var t=eval("document.etape1.total.value"); o=o-0.5; var res=eval(o); alert("valeur : "+o); t=t+2; if(o<2){ alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o=2; t=t-2; } else{ alert("je suis ds le else"); o+=0.5; alert(eval(o)); } }
Cette fonction fonctionne (comme quoi ca porte bien son nom), seul émol, la valeur ds le champs ne change pas... étrange non ?
Absolument pas. Tu écris : o=eval("document.etape1."+chp+".value"); donc o est une valeur de type chaîne, celle renvoyée par la propriété value de l'élément de formulaire et pas un objet.
La façon correcte est de créer une référence vers l'objet, et utiliser au moment opportun ses propriétés. var o, t; o = document.forms.etape1[chp]; //eval ne sert strictement à rien qu'à faire magique ou beau dans ton code ? t = document.forms.etape1.total; o.value -= .5; t.value += 2; if (o.value < 2) {// etc. }
-- Y.D.
Hakito
o est une valeur de type chaîne, celle renvoyée par la propriété value de l'élément de formulaire et pas un objet. Je suis d'accord... c'est une belle erreur...
J'ai repris ton exemple et j'en ai fait cela : function soust(chp){
var o=document.forms.etape1[chp]; //=parseFloat(document.etape1.chp.value)-0.5; var t=document.forms.etape1.total; //=parseInt(document.etape1.total.value)+2; o.value-=0.5; t.value+=2; if(o.value < 2){ alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o.value+=0.5; t.value-=2; } } Alors effectivement, ma fonction utilise bien l'argument, la dessus, c'est parfait... Le seul problème, c'est qu'au moment du IF, la fonction "concatene" 0(au lieu de soustraire 2) et 0.5(au lieu d'ajouter 0.5) ... J'obtiens donc 1000 et 1.50.5. J'ai bien l'impression qu'il s'agit d'une chaine de caractere... et pas d'un entier... (pourtant je n'ai pas mis de "" dans mon formulaire (value=x).
Je suis de plus en plus perdu... :'(
-- HAKITO "y'a pas de tralala, y'a que des résultats"
o est une valeur de type chaîne, celle renvoyée par la propriété value
de
l'élément de formulaire et pas un objet.
Je suis d'accord... c'est une belle erreur...
J'ai repris ton exemple et j'en ai fait cela :
function soust(chp){
var o=document.forms.etape1[chp];
//=parseFloat(document.etape1.chp.value)-0.5;
var t=document.forms.etape1.total;
//=parseInt(document.etape1.total.value)+2;
o.value-=0.5;
t.value+=2;
if(o.value < 2){
alert("Vous avez atteint la limite d'attribution des points pr cette
caractéristique.");
o.value+=0.5;
t.value-=2;
}
}
Alors effectivement, ma fonction utilise bien l'argument, la dessus,
c'est parfait...
Le seul problème, c'est qu'au moment du IF, la fonction "concatene"
0(au lieu de soustraire 2) et 0.5(au lieu d'ajouter 0.5) ... J'obtiens
donc 1000 et 1.50.5.
J'ai bien l'impression qu'il s'agit d'une chaine de caractere... et pas
d'un entier... (pourtant je n'ai pas mis de "" dans mon formulaire
(value=x).
Je suis de plus en plus perdu... :'(
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
o est une valeur de type chaîne, celle renvoyée par la propriété value de l'élément de formulaire et pas un objet. Je suis d'accord... c'est une belle erreur...
J'ai repris ton exemple et j'en ai fait cela : function soust(chp){
var o=document.forms.etape1[chp]; //=parseFloat(document.etape1.chp.value)-0.5; var t=document.forms.etape1.total; //=parseInt(document.etape1.total.value)+2; o.value-=0.5; t.value+=2; if(o.value < 2){ alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o.value+=0.5; t.value-=2; } } Alors effectivement, ma fonction utilise bien l'argument, la dessus, c'est parfait... Le seul problème, c'est qu'au moment du IF, la fonction "concatene" 0(au lieu de soustraire 2) et 0.5(au lieu d'ajouter 0.5) ... J'obtiens donc 1000 et 1.50.5. J'ai bien l'impression qu'il s'agit d'une chaine de caractere... et pas d'un entier... (pourtant je n'ai pas mis de "" dans mon formulaire (value=x).
Je suis de plus en plus perdu... :'(
-- HAKITO "y'a pas de tralala, y'a que des résultats"
YD
[...] if(o.value < 2){
alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o.value+=0.5; t.value-=2; } } Le seul problème, c'est qu'au moment du IF, la fonction "concatene" 0(au lieu de soustraire 2) et 0.5(au lieu d'ajouter 0.5) ... J'obtiens donc 1000 et 1.50.5. J'ai bien l'impression qu'il s'agit d'une chaine de caractere... et pas d'un entier... (pourtant je n'ai pas mis de "" dans mon formulaire (value=x).
Au temps pour moi ! J'ai négligé cette conversion... Ton o.value est obligatoirement de type chaîne (par définition, la propriété value d'un champ input type=text contient une valeur chaîne). Donc après rectification :
if (2 > o.value){//Conversion effectuée automatiquement pour la comparaison quand un des deux opérandes est de type numérique o.value = 0.5 + +o.value; // Attention aux deux '+', le 2e force la conversion en num. sinon le premier + concaténerait... t.value -= 2; // conversion implicitement effectuée avec l'opérateur - }
Pour être plus simple, ou pédagogique, l'instruction o.value = 0.5 + +o.value; est exécutée ainsi +o.value -> conversion de o.value de chaîne en nombre 0.5 + (résultat précédent) -> addition des 2 valeurs o.value = (résultat précédent) -> affectation de la valeur calculée après conversion en chaîne (ce qui est attendu)
Pour la convertir une valeur quelconque en valeur numérique, le plus simple est d'utiliser l'opérateur + unaire de javascript qui est là justement pour ça (forcer la conversion, je cite ECMA-262 : "The unary + operator converts its operand to Number type.").
-- Y.D.
[...]
if(o.value < 2){
alert("Vous avez atteint la limite d'attribution des points pr
cette caractéristique.");
o.value+=0.5;
t.value-=2;
}
}
Le seul problème, c'est qu'au moment du IF, la fonction "concatene" 0(au
lieu de soustraire 2) et 0.5(au lieu d'ajouter 0.5) ... J'obtiens donc
1000 et 1.50.5.
J'ai bien l'impression qu'il s'agit d'une chaine de caractere... et pas
d'un entier... (pourtant je n'ai pas mis de "" dans mon formulaire
(value=x).
Au temps pour moi ! J'ai négligé cette conversion... Ton o.value est
obligatoirement de type chaîne (par définition, la propriété value d'un
champ input type=text contient une valeur chaîne).
Donc après rectification :
if (2 > o.value){//Conversion effectuée automatiquement pour la comparaison quand un des deux opérandes est de type numérique
o.value = 0.5 + +o.value; // Attention aux deux '+', le 2e force la conversion en num. sinon le premier + concaténerait...
t.value -= 2; // conversion implicitement effectuée avec l'opérateur -
}
Pour être plus simple, ou pédagogique, l'instruction
o.value = 0.5 + +o.value;
est exécutée ainsi
+o.value -> conversion de o.value de chaîne en nombre
0.5 + (résultat précédent) -> addition des 2 valeurs
o.value = (résultat précédent) -> affectation de la valeur calculée après conversion en chaîne (ce qui est attendu)
Pour la convertir une valeur quelconque en valeur numérique, le plus simple
est d'utiliser l'opérateur + unaire de javascript qui est là justement pour
ça (forcer la conversion, je cite ECMA-262 :
"The unary + operator converts its operand to Number type.").
alert("Vous avez atteint la limite d'attribution des points pr cette caractéristique."); o.value+=0.5; t.value-=2; } } Le seul problème, c'est qu'au moment du IF, la fonction "concatene" 0(au lieu de soustraire 2) et 0.5(au lieu d'ajouter 0.5) ... J'obtiens donc 1000 et 1.50.5. J'ai bien l'impression qu'il s'agit d'une chaine de caractere... et pas d'un entier... (pourtant je n'ai pas mis de "" dans mon formulaire (value=x).
Au temps pour moi ! J'ai négligé cette conversion... Ton o.value est obligatoirement de type chaîne (par définition, la propriété value d'un champ input type=text contient une valeur chaîne). Donc après rectification :
if (2 > o.value){//Conversion effectuée automatiquement pour la comparaison quand un des deux opérandes est de type numérique o.value = 0.5 + +o.value; // Attention aux deux '+', le 2e force la conversion en num. sinon le premier + concaténerait... t.value -= 2; // conversion implicitement effectuée avec l'opérateur - }
Pour être plus simple, ou pédagogique, l'instruction o.value = 0.5 + +o.value; est exécutée ainsi +o.value -> conversion de o.value de chaîne en nombre 0.5 + (résultat précédent) -> addition des 2 valeurs o.value = (résultat précédent) -> affectation de la valeur calculée après conversion en chaîne (ce qui est attendu)
Pour la convertir une valeur quelconque en valeur numérique, le plus simple est d'utiliser l'opérateur + unaire de javascript qui est là justement pour ça (forcer la conversion, je cite ECMA-262 : "The unary + operator converts its operand to Number type.").
-- Y.D.
Hakito
Au temps pour moi ! J'ai négligé cette conversion... Ton o.value est obligatoirement de type chaîne (par définition, la propriété value d'un champ input type=text contient une valeur chaîne). OK, ca je ne savais pas...Mais du coup, pourqui ne pas utiliser
parseFloat() ? Et aussi, pourquoi au début de ma fonction, le o.value-=.5; fonctionne si il s'agit d'une chaine de caractère ?
// Attention aux deux '+', le 2e force la conversion en num. sinon le premier + concaténerait... voilà donc pkoi il me concatenait 0.5 et que j'obtenais 1.50.5
t.value -= 2; // conversion implicitement effectuée avec l'opérateur - } Et bien malheureusement, ca ne fonctionne pas... il concatène le 2 puis
soustrait 2. Mon 100 (par ex.) de départ devient 1002 puis 1000...
Pour la convertir une valeur quelconque en valeur numérique, le plus simple est d'utiliser l'opérateur + unaire de javascript qui est là justement pour ça (forcer la conversion, je cite ECMA-262 : "The unary + operator converts its operand to Number type."). alors la j'ai pas tout compris.. je pensais que CT un caractère qui
servait à concaténer... Et du coup, je reste sur ma question, à quoi bn avoir parseFloat si c'est pour utiliser + ? Quelques choses m'échappent...
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Au temps pour moi ! J'ai négligé cette conversion... Ton o.value est
obligatoirement de type chaîne (par définition, la propriété value d'un
champ input type=text contient une valeur chaîne).
OK, ca je ne savais pas...Mais du coup, pourqui ne pas utiliser
parseFloat() ?
Et aussi, pourquoi au début de ma fonction, le o.value-=.5; fonctionne
si il s'agit d'une chaine de caractère ?
// Attention aux deux '+', le 2e force la
conversion en num. sinon le premier + concaténerait...
voilà donc pkoi il me concatenait 0.5 et que j'obtenais 1.50.5
t.value -= 2; // conversion implicitement effectuée avec l'opérateur -
}
Et bien malheureusement, ca ne fonctionne pas... il concatène le 2 puis
soustrait 2. Mon 100 (par ex.) de départ devient 1002 puis 1000...
Pour la convertir une valeur quelconque en valeur numérique, le plus simple
est d'utiliser l'opérateur + unaire de javascript qui est là justement pour
ça (forcer la conversion, je cite ECMA-262 :
"The unary + operator converts its operand to Number type.").
alors la j'ai pas tout compris.. je pensais que CT un caractère qui
servait à concaténer...
Et du coup, je reste sur ma question, à quoi bn avoir parseFloat si
c'est pour utiliser + ?
Quelques choses m'échappent...
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
Au temps pour moi ! J'ai négligé cette conversion... Ton o.value est obligatoirement de type chaîne (par définition, la propriété value d'un champ input type=text contient une valeur chaîne). OK, ca je ne savais pas...Mais du coup, pourqui ne pas utiliser
parseFloat() ? Et aussi, pourquoi au début de ma fonction, le o.value-=.5; fonctionne si il s'agit d'une chaine de caractère ?
// Attention aux deux '+', le 2e force la conversion en num. sinon le premier + concaténerait... voilà donc pkoi il me concatenait 0.5 et que j'obtenais 1.50.5
t.value -= 2; // conversion implicitement effectuée avec l'opérateur - } Et bien malheureusement, ca ne fonctionne pas... il concatène le 2 puis
soustrait 2. Mon 100 (par ex.) de départ devient 1002 puis 1000...
Pour la convertir une valeur quelconque en valeur numérique, le plus simple est d'utiliser l'opérateur + unaire de javascript qui est là justement pour ça (forcer la conversion, je cite ECMA-262 : "The unary + operator converts its operand to Number type."). alors la j'ai pas tout compris.. je pensais que CT un caractère qui
servait à concaténer... Et du coup, je reste sur ma question, à quoi bn avoir parseFloat si c'est pour utiliser + ? Quelques choses m'échappent...
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Hakito
Et bien malheureusement, ca ne fonctionne pas... il concatène le 2 puis soustrait 2. Mon 100 (par ex.) de départ devient 1002 puis 1000...
Je viens d'essayer de suivre l'histoire du + qui convertit la chaine en nombre... J'ai mis : t.value = +t.value+2; avant le IF et : t.value = t.value - 2; aprés le IF Du coup, cela fonctionne maintenant !
Je trouve tout cela complexe juste pr faire une opération toute simple !! :/
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Et bien malheureusement, ca ne fonctionne pas... il concatène le 2 puis
soustrait 2. Mon 100 (par ex.) de départ devient 1002 puis 1000...
Je viens d'essayer de suivre l'histoire du + qui convertit la chaine en
nombre... J'ai mis :
t.value = +t.value+2;
avant le IF et :
t.value = t.value - 2;
aprés le IF
Du coup, cela fonctionne maintenant !
Je trouve tout cela complexe juste pr faire une opération toute simple
!! :/
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
Et bien malheureusement, ca ne fonctionne pas... il concatène le 2 puis soustrait 2. Mon 100 (par ex.) de départ devient 1002 puis 1000...
Je viens d'essayer de suivre l'histoire du + qui convertit la chaine en nombre... J'ai mis : t.value = +t.value+2; avant le IF et : t.value = t.value - 2; aprés le IF Du coup, cela fonctionne maintenant !
Je trouve tout cela complexe juste pr faire une opération toute simple !! :/
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Hakito
Je viens de me rendre compte d'une chose "stupide". Je sus bien gentil de faire le calcul avec des boutons + et -... mais l'utilisateur peut modifier la valeur du champs... AHAHA, c'est un peu bête... Alors j'ai trouvé l'attribut readonly (html) ou readOnly(en js) en faisant une recherche sur internet... Je cherche sous google mais je n'obtiens pas les résultats escomptés...Etant donné que je ne connais l'OS de mes visiteurs... je me dis que readonly n'est pas adapté (vu qu'il ne fonctionne que sous IE4+), mais je ne trouve pas de description de l'attribut readOnly (js)...
alors : Ou pourrai-je avoir l'explication détaillée de cet attribut ? Si vous avez des URL...je suis preneur ^^
-- HAKITO "y'a pas de tralala, y'a que des résultats"
Je viens de me rendre compte d'une chose "stupide".
Je sus bien gentil de faire le calcul avec des boutons + et -... mais
l'utilisateur peut modifier la valeur du champs...
AHAHA, c'est un peu bête...
Alors j'ai trouvé l'attribut readonly (html) ou readOnly(en js) en
faisant une recherche sur internet...
Je cherche sous google mais je n'obtiens pas les résultats
escomptés...Etant donné que je ne connais l'OS de mes visiteurs... je
me dis que readonly n'est pas adapté (vu qu'il ne fonctionne que sous
IE4+), mais je ne trouve pas de description de l'attribut readOnly
(js)...
alors : Ou pourrai-je avoir l'explication détaillée de cet attribut ?
Si vous avez des URL...je suis preneur ^^
--
HAKITO
"y'a pas de tralala, y'a que des résultats"
Je viens de me rendre compte d'une chose "stupide". Je sus bien gentil de faire le calcul avec des boutons + et -... mais l'utilisateur peut modifier la valeur du champs... AHAHA, c'est un peu bête... Alors j'ai trouvé l'attribut readonly (html) ou readOnly(en js) en faisant une recherche sur internet... Je cherche sous google mais je n'obtiens pas les résultats escomptés...Etant donné que je ne connais l'OS de mes visiteurs... je me dis que readonly n'est pas adapté (vu qu'il ne fonctionne que sous IE4+), mais je ne trouve pas de description de l'attribut readOnly (js)...
alors : Ou pourrai-je avoir l'explication détaillée de cet attribut ? Si vous avez des URL...je suis preneur ^^
-- HAKITO "y'a pas de tralala, y'a que des résultats"
ASM
Ton o.value est obligatoirement de type chaîne (par définition, la propriété value d'un champ input type=text contient une valeur chaîne).
perso, dans ce cas j'attaque directement le champ.value
truc = o.value*1 + 0.5;
valeur de o égale valeur de o multipliée par 1 (donc c'est bien un nombre) plus autre nombre
et mieux :
truc = (o.value+0.5)*1;
Mais du coup, pourqui ne pas utiliser parseFloat() ?
parseFloat() si je me trompe va rechercher dans ce que tu lui donne le premier nombre y rencontré et le considérer comme entité flottante (c a d avec virgule) mais pas obligatoirement considéré comme nombre (ce reste un string, une chaîne)
Et aussi, pourquoi au début de ma fonction, le o.value-=.5; fonctionne si il s'agit d'une chaine de caractère ?
pour te simplifier la vie, systématiquement, tu indiques bien au JS de quoi tu causes n = (n1+n2)*1 ou n = n1+''+n2 et puis ça roule
Et du coup, je reste sur ma question, à quoi bn avoir parseFloat si c'est pour utiliser + ?
peut-être parceque parseFloat ne convertit pas en nombre ? il se contente d'extraire l'image d'un nombre avec virgule
Quelques choses m'échappent...
ha? serais-tu le seul ?
-- ******************************************************* Stéphane MORIAUX et son vieux Mac Aide Pages Perso (images & couleurs, formulaire, CHP) http://perso.wanadoo.fr/stephane.moriaux/internet/ *******************************************************
Ton o.value est
obligatoirement de type chaîne (par définition, la propriété value d'un
champ input type=text contient une valeur chaîne).
perso, dans ce cas j'attaque directement le champ.value
truc = o.value*1 + 0.5;
valeur de o égale
valeur de o multipliée par 1 (donc c'est bien un nombre)
plus
autre nombre
et mieux :
truc = (o.value+0.5)*1;
Mais du coup, pourqui ne pas utiliser parseFloat() ?
parseFloat() si je me trompe
va rechercher dans ce que tu lui donne le premier nombre y rencontré
et le considérer comme entité flottante (c a d avec virgule) mais pas
obligatoirement considéré comme nombre (ce reste un string, une chaîne)
Ton o.value est obligatoirement de type chaîne (par définition, la propriété value d'un champ input type=text contient une valeur chaîne).
perso, dans ce cas j'attaque directement le champ.value
truc = o.value*1 + 0.5;
valeur de o égale valeur de o multipliée par 1 (donc c'est bien un nombre) plus autre nombre
et mieux :
truc = (o.value+0.5)*1;
Mais du coup, pourqui ne pas utiliser parseFloat() ?
parseFloat() si je me trompe va rechercher dans ce que tu lui donne le premier nombre y rencontré et le considérer comme entité flottante (c a d avec virgule) mais pas obligatoirement considéré comme nombre (ce reste un string, une chaîne)