11548 sujets

JavaScript, DOM et API Web HTML5

Pages :
(reprise du message précédent)

FlorentG a écrit :
Alalala Smiley fache Faut y aller par document.getElementById, c'est plus propre et c'est surtout standard
document.forms est standard puisque ça fait partie du DOM HTML.

Ceci dit, c'est vrai que c'est plus propre d'utiliser document.getElementById.
Eldebaran a écrit :
document.forms est standard puisque ça fait partie du DOM HTML.

Ca oui :jap: maintenant les noms de champs repris en propriétés je sais pas Smiley decu
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 Smiley cligne
coucou a écrit :
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, ...
Heu si, largement...

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.
Le problème étant que je ne comprends pas pourquoi j'obtiens NaN dans le champ résultat ???


Merci encore pour votre aide.
La valeur d'un radio non selectionné est elle bien considérée comment étant 0 ?


La facon dont j'ai fait appel à mon script en fin de formulaire est elle la bonne ? Je n'ai vraiment aucune notion de JS ...
Bonjour, je n'ai pas llu la première page.

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.
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.
Modifié par Atomic Lutin (14 Nov 2006 - 08:01)
Atomic Lutin a écrit :
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.
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.
Ouaip, parfois le ghetto-style debugging est la seule solution... Ou mieux utiliser FireFox et l'extension Venkman qui fourni un vrai debugger avec point d'arrêts et espions Smiley smile
As-tu prévu le cas où aucun bouton radio n'est sélectionné (état initial) ?
Ça pourrait être une piste plausible.
Pages :