Document.body vs document.write

Résolu
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007 - 29 juin 2007 à 16:13
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 2 juil. 2007 à 09:35
Bonjour à tous!

Je n'arrive toujours pas très bien à comprendre ce que font document.body et document.write.
Cela fait seulement 2 semaines que je code du javascript. Et j'ai récupérér plusieurs scripts pour m'entraîner. Aussi, dans un, la fonction document.body.innerHTML est utilisée. Par la suite j'ai utilisé des document.getElementById (id ajouté par le document.body.innerHTML) pour rajouter du style.

Ensuite sur le second script, je vois document.write. Donc sans me pôser de questions j'utilise encore une fois des getElementById (id ajouté par document.write). Mais cette fois, il y a une erreur. Je décide donc de changer les document.write en document.body.innerHTML, mais rien à faire.
Un message d'erreur (sous IE6) m'indique que document.body est Null ou n'est pas un objet.

J'ai beau essayé tous les trucs possibles et imaginables, je n'obtiens que des erreurs.
Quelqu'un pourrait-il m'expliquer les différences d'utilisation entre les deux? afin d'entrevoir une solution peut-être... :/

Merci d'avance

4 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 juin 2007 à 16:32
une chose à savoir avec document.write :
    si la page a été totalement interprétée, document.write efface cette page
       y compris le javascript ( cas, par exemple, de document.write qu'on
       appelle en cliquant sur un bouton )

après utiliser l'un ou l'autre, des arguments plaident pour l'un ou l'autre
    et d'autres en leur défaveur...

on peut faire aussi autrement et "mieux"  , plus "général"
    ( nécessaire même dans certains contextes )

>>m'indique que document.body est Nul
    si tu as une balise et pas de raisons (?)
    sans voir le script ... ( enfin, un extrait, tout ce qui est nécessaire
       mais seulement ça ), je dirais bien que l'erreur est à la ligne 68,
       mais je suis loin d'en être sûr... ;-)




<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
3
yousfane Messages postés 243 Date d'inscription vendredi 24 novembre 2006 Statut Membre Dernière intervention 21 décembre 2007 2
30 juin 2007 à 00:11
Salut
Le document.write sèrt à écrire dans la page et il éface tout le code de cette page.
Le document.body.innerHTML ne peut changer que le code qui est après la balise body
Pour document.getElementById("id de l\'élement"), ça sert à modifier un seul élement dans la page (sa source html, son style, .....) ou de récuperer son style ou sa source ....
0
arnaultp Messages postés 29 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 25 juillet 2007
2 juil. 2007 à 09:24
J'ai finalement réussi à faire ce que je recherchais. Je ne sais pas trop comment justement. Peut-être que j'avais mal écrit qqch. Peut-être que je l'avais placé à un endroit qu'il n'aimait pas...mais bon maintenant ça fonctionne.

Et, ce que je ne comprenais pas à la base bultez, c'est justement que mon "document.body" était dit ayant la valeur Null alors que j'avais ma balise dans mon html.

En tous cas merci pour vos réponses à tous les deux.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 juil. 2007 à 09:35
si c'est résolu : nickel,
mais nous (je me cite ?) :

sans voir le script ... ( enfin, un extrait, tout ce qui
        est nécessaire mais seulement ça ), on ne pouvait pas faire grand chose.



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
0