fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019
-
23 mars 2005 à 16:26
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019
-
25 mars 2005 à 10:26
Bonjour,
J'ai une page ASP qui me liste un certain nombre de document par le biais d'une boucle.
Afin d'identifier chaque champ j'ai mis ceci:
<% Response.Write "" %>
i étant le chiffre de la boucle.
Jusque là j'ai aucun soucis
Mon Pb survient en fait avec la récupération via java de chaque valeur saisie qui est un chiffre.
Je souhaite faire le total à chaque fois qu'une valeur est modifiée et je l'affecte à un champ
J'ai d'ailleurs été obligé de déclarer un form pour la synthese car le getElementsByTagName ne marche pas !!
J'ai donc fait ceci:
function TotalNb()
{
nbDocBad=0;
for (i=1; i<=document.frmChoixDoc.txtNbChoix.value; i++)
nbDocBad=nbDocBad+document.frmChoixDoc.txtBad+[i].value;
alert(document.frmChoixDoc.txtBad+i.value);
document.frmSynthese.txtNbDocBad.value=nbDocBad;
}
Pour seule résultat, j'ai NaN quand je mets 1 par exemple dans mon premier champs ou dans un des suivants.
Si je fais un alert(document.frmChoixDoc.txtBad1.value) j'ai bien ma valeur, mais en passant par la boucle java, je ne l'ai plus.
J'ai certainement commis une erreur mais ou ?
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 10:42
Ok mais dans ce cas, comment puis je faire cela?
J'ai vraiment besoin de le faire pour mon travail, comment contourner cela, en convertissant mon string vers une décimal, en asp c'est possible, et en java?
chimelpremier
Messages postés544Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention20 mai 2005 24 mars 2005 à 11:50
J'ai pourtant déja utilisé cette méthode pour transformer un string en
nombre, mais eval() serait peut-êrtre plus correct. Voir le lien de mon
message précédent
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 11:52
J'ai trouvé ceci:
String montexte = new String(« 10 »);
Integer nomnombre=new Integer(montexte);
int i = monnombre.intValue(); //convertion d'Integer en int
Mais lorsque je mets ceci, j'ai une erreur m'indiquant qu'il manque une ;
Je tourne en ronds et je m'arrache les cheveux :o/
Merci
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 12:03
Après quelques tests, il s'avère que c'est dans ma récupération de la valeur du champs.
Autrement dit si je fais un alert(document.frmChoixDoc.txtBad+i.value) il me dit undefinde, par conséquent je ne peux pas faire de total sur des valeurs inexistantes.
Je ne pense pas me tromper pour récupérer les valeurs de x champs dans un tableau:
function TotalNb()
{
nbDocBad = 0;
for (i=1; i<=document.frmChoixDoc.txtNbChoix.value; i++)
{
nbDocBad+=eval(document.frmChoixDoc.txtBad+i.value); //incrément pour récup chq champs
}
document.frmSynthese.txtNbDocBad.value=nbDocBad;
}
Autrement, dit dans ma page de test, j'ai 9 champs, valeur stockée dans (document.frmChoixDoc.txtNbChoix.value).
La valeur i s'incrémente ok.
Mais il ne semble pas lire mon champs correctement.
Cela provient de ma formulation d'interrogation du champ:
document.frmChoixDoc.txtBad+i.value
Le +i génère un pb, mais comment faire autrement?
cs_roro06
Messages postés732Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention29 octobre 2007 24 mars 2005 à 14:18
Bonjour
perso, je ferais :
la boucle asp :
<% Response.Write "" %>
le javascript : (Attention : java != javascript)
function TotalNb()
{
var nbDocBad=0;
for (i=0; i<document.getElementsByName("txtBad").length; i++)
nbDocBad+=eval(document.getElementsByName("txtBad")[i].value);
document.getElementsByName("txtNbDocBad")[0].value=nbDocBad;
}
1/ Tu n'es absolument pas obligé de déclarer un formulaire pour ce type de manip (un formulaire sert à envoyer des données au serveur). getElementsByName est un tableau (Remarquer le s de "elements", voir la fonction TotalNb())
2/ En règle générale, il est préférable d'accéder aux éléments de la page par document.getElementById() ou document.getElementsByName plutôt que via un formulaire, inutile.
chimelPremier :
document.getElementsByTagName('txtBad'+i).value ne peut pas marcher, pour les raisons que je viens de donner.
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 14:30
en faisant
for (i=1; i<=document.frmChoixDoc.txtNbChoix.value; i++)
{
alert('i = '+i+' - txtBad'+i+'.value : '+document.getElementsByTagName('txtBad'+i).value);
}
Il me donne undefined pour chaque champs trouvé.
Voici un extrait de mon code html au cas où:
<tr>
<td width="31" align="center">
</td>
</tr>
<tr>
<td width="31" align="center">
</td>
</tr>
.....
Je comprends pas où ça coince :o(
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 14:40
Merci Roro06, pour le total ça marche au poil
Mais, j'ai mis un form pour envoyer justement vers un serveur par la suite les sélections faites pour les enregistrer dans une table.
Le tableau ressemble à ça:
Ligne 1 txtBad1 = 1
Ligne 2 txtBad2 = 0
Ligne 3 txtBad3 = 0
Ligne 4 txtBad4 = 2
Mon Total txtBad sera = 3
Lorsque je valide, j'enregistre la valeur de chaque champs dans ma table en récupérant celle ci via une boucle asp dans ma page de traitement, mais si je mets txtBad seulement en nom de champs, ça marche plus.
Donc pour résumer, ta technique fonctionne impec pour le total, mais plus de résultat dans mon traitement.
Ma technique pour le traitement fonctionne, mais je n'ai pas de total en live sur la page de saisie.
Je vais plus avoir de cheveux si ça continue :o))
cs_roro06
Messages postés732Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention29 octobre 2007 24 mars 2005 à 14:57
Bonjour
Premièrement, garde tes cheveux : l'été approche, ils peuvent encore servir
en suivant "ma" technique, tu va recevoir ton textBad sous forme de tableau.
Si tu fais : <%=request("textBad")%>, tu va voir apparaître qqch sous la forme :
7,8,1,-9,8...
donc tu peux exploiter de plusieurs manières :
dim t()
t=split(request("textBad"), ",")
soit dans une boucle :
for each t in request("textBad")
total=total+t
next
ps:Attention à getElementsByTagName : comme son nom l'indique, il permet d'accéder aux éléments du document par leur nom de balise, càd : td, table, body, a, etc ... (etc n'étant pas une balise, ça veut dire et caetera). C'est un tableau (d'où le s), donc pour accéder à un élément, il faut un indice. Par exemple, pour accéder à l'élément body, il faut utiliser : document.getElementsByTagName("body")[0]
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 15:53
Tite question :o)
Si mon champs prix contient la valeur 21,95 par exemple, il me prend seulement 95 si j'utilise la fonction eval(document.getElementsByName("pxDoc")[i].value)
Pourquoi et comment remédier à cela.
Amicalement
Thierry
fdthierry
Messages postés106Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention27 septembre 2019 24 mars 2005 à 17:04
J'ai réussi à faire tout ça, cool merci bcp à vous deux
Euh sans trop abuser, je clos le post ensuite
Lors de tous ces calcules, si je fais par exemple 19.95*101 ça donne 1509.9499999999998, existe t'il un moyen de définir le format à 2 chiffres après la virgule.