11548 sujets
Bonjour,
La solution de getElementById n'est ni plus ni moins propre que forms[0] qui permet d'accéder au premier formulaire de l'ensemble des formulaires, ni d'ailleurs que formul = document.getElementsByTagName("form") puis formul[0]. Les trois solutions sont effectivement conformes au DOM. Si vous préférez, on peut aussi écrire document.forms["identificateur_du_formulaire"].elements["autre_identificateur"].value. Je trouve que cette écrutre alourdit le texte sans apporter d'informations sur la structure DOM du document.
Tout cela n'est finalement qu'une question d'habitude...
Cordialement
La solution de getElementById n'est ni plus ni moins propre que forms[0] qui permet d'accéder au premier formulaire de l'ensemble des formulaires, ni d'ailleurs que formul = document.getElementsByTagName("form") puis formul[0]. Les trois solutions sont effectivement conformes au DOM. Si vous préférez, on peut aussi écrire document.forms["identificateur_du_formulaire"].elements["autre_identificateur"].value. Je trouve que cette écrutre alourdit le texte sans apporter d'informations sur la structure DOM du document.
Tout cela n'est finalement qu'une question d'habitude...
Cordialement

coucou a écrit :Heu si, largement...
La solution de getElementById n'est ni plus ni moins propre que forms[0] qui permet d'accéder au premier formulaire de l'ensemble des formulaires, ...
Il suffit d'ajouter un formulaire au début de la page pour que forms[0] ne cible plus le bon élément, alors que document.getElementById est beaucoup plus pérenne. De façon générale, il vaut mieux accéder en Javascript aux éléments de façon claire, ça évite d'avoir des bugs incompréhensibles quand la structure du HTML change.
Bonjour, je n'ai pas llu la première page.
document.forms peut aussi être utilisé comme tableau associatif, c'est-à-dire p.ex. document.forms['id_du_formulaire']. Ce qui rend l'un autant perraine que l'autre.
NaN = Not A Number = Un des champs additionnés ne contenait pas un nombre ou une opération invalide a été effectuée (p.ex. division par 0)
Pour vérifier qu'un champ contient bel et bien un nombre, plusieurs possibilités :
- Tester le résultat retourné par parseFloat ou parseInt. Si la conversion n'a pas pu être effectuée, ces deux fonctions renvoient la valeur NaN. La valeur logique NaN est disponible dans la constante Number.NaN, elle n'est PAS équivalente à la chaîne "NaN" même si c'est ce que certains navigateurs laissent croire.
- Utiliser une expression régulière. ^\d+$ ou ^\d+(\.\d+)$ pour ne citer que les exemples les plus courants.
- Utiliser la fonction isNaN et vérifier qu'elle renvoie false. Attention toutefois, une chaîne vide ou ne contenant que des espaces sera considérée par isNaN comme étant un nombre et retournera false, mais il est néanmoins inconvertible en nombre et court-circuitera toutes les opérations en renvoyant NaN.
a écrit :
Il suffit d'ajouter un formulaire au début de la page pour que forms[0] ne cible plus le bon élément, alors que document.getElementById est beaucoup plus
pérenne.
document.forms peut aussi être utilisé comme tableau associatif, c'est-à-dire p.ex. document.forms['id_du_formulaire']. Ce qui rend l'un autant perraine que l'autre.
a écrit :
Le problème étant que je ne comprends pas pourquoi j'obtiens NaN dans le champ résultat ???
NaN = Not A Number = Un des champs additionnés ne contenait pas un nombre ou une opération invalide a été effectuée (p.ex. division par 0)
Pour vérifier qu'un champ contient bel et bien un nombre, plusieurs possibilités :
- Tester le résultat retourné par parseFloat ou parseInt. Si la conversion n'a pas pu être effectuée, ces deux fonctions renvoient la valeur NaN. La valeur logique NaN est disponible dans la constante Number.NaN, elle n'est PAS équivalente à la chaîne "NaN" même si c'est ce que certains navigateurs laissent croire.
- Utiliser une expression régulière. ^\d+$ ou ^\d+(\.\d+)$ pour ne citer que les exemples les plus courants.
- Utiliser la fonction isNaN et vérifier qu'elle renvoie false. Attention toutefois, une chaîne vide ou ne contenant que des espaces sera considérée par isNaN comme étant un nombre et retournera false, mais il est néanmoins inconvertible en nombre et court-circuitera toutes les opérations en renvoyant NaN.
Atomic Lutin a écrit :Dans ce cas-là, il ne te reste plus qu'à ajouter des alert dans ton code pour voir d'où vient le problème... C'est encore la meilleure solution pour progresser.
Dans ma page je n'effectue aucune division, et chaque valeur est définie à l'avance dans le radio, il n'y a donc pas d'espaces ou de blancs...c'est ca que j'ai du mal à saisir.
a écrit :
Lol je ne connais pas une ligne de code en JavaScript je crois que tout ceci est bie au dessus de mes compétences...
Attention à ne pas faire la confusion car java et javascript n'ont rien à voir entre eux.