Accès et modification d'un élément de ma page (DOM)

Accès et modification d'un élément de ma page (DOM) - HTML/CSS - Programmation

Marsh Posté le 12-10-2005 à 09:42:53    

Bonjour, :hello:  
 
j'ai un problème en javascript pour modifier le texte d'une partie de ma page
 
ça marche sous ie mais pas sous firefox (nescape)
 
voila la page : http://cslocmine.free.fr/new/pompiers_individuel.php
 
http://img387.imageshack.us/img387/1597/17uk.png
 
lorsque l'on passe au dessus des minis photos la grande photo change (sous ie et ff ça marche) et le texte change (marche sous ie mais marche pas sous ff)
 
voila le code
 

Code :
  1. img src="photos/individuelle/ridel_stephane.jpg" width="47" onMouseOver="change_img('identite', 'document', 'photos/individuelle/vierge.jpg', 'photos/individuelle/ridel_stephane.jpg'), change_texte(1)">


 
 
la fonction change texte qui déconne sous ff

Code :
  1. function change_texte(num){
  2. //detection du navigateur
  3. var navigateur = navigator.appName;
  4. //le message a écrire
  5. var message = '<span class=\"Style4 Style1 Style5\"><b>Nom : </b>' + tab_nom[num] + '</span>';
  6. //on ecrit le message
  7. if(navigateur=="Netscape" ){
  8.  doc = "document";
  9.  sty = "";
  10.  htm = ".document";
  11. } else {
  12.  doc = "document.all";
  13.  sty = ".style";
  14.  htm = "";
  15. }
  16. var code_nom = eval(doc + '["pompier_nom"]' + htm);
  17. //alert (code_nom);
  18. if(navigateur=="Netscape" ){
  19.  code_nom.write(message);
  20.  code_nom.close();
  21. }else{
  22.  code_nom.innerHTML = message;
  23. }
  24. }


 
voila l'erreur que me donne la console javascript de FireFox :  
<b>Erreur : document.pompier_nom has no properties
Fichier Source : http://127.0.0.1/pompier_locmine/p [...] viduel.php
Ligne : 104</b>
 
 
Je dois avoir un pb pour accèder à l'élément de ma page
mais lequel ??
 
merci d'avance pour votre aide :hello:


---------------
merci http://forum.hardware.fr !!
Reply

Marsh Posté le 12-10-2005 à 09:42:53   

Reply

Marsh Posté le 12-10-2005 à 13:25:43    

Salut,
 
Si j'ai bien compris, pour netscape on obtient:
document["pompier_nom"].document.write(message);
 
Ne manque-t'il pas une référence à l'id de ton div?
En tout cas, j'utilise plutôt cette technique pour écrire dans un div:
ex: document.getElementById['pompier_nom'].value = message;
 
et au niveau de ton image, si c'est du javascript, ne faut'il pas mettre un ; au lieu d'une , pour séparer deux commandes:
img src="photos/individuelle/ridel_stephane.jpg" width="47" onMouseOver="change_img('identite', 'document', 'photos/individuelle/vierge.jpg', 'photos/individuelle/ridel_stephane.jpg'), change_texte(1)"> et mettre un ; à la place
 
Voilà,
J'espère que cela t'aidera.
 
Oximore

Reply

Marsh Posté le 12-10-2005 à 13:35:59    

le document.write ne s'applique qu'à l'objet docuement !!
 
il faut utiliser le innerHTML pour rentrer du HTML dans un élément


---------------
Les CSS c'est bon mangez-en
Reply

Marsh Posté le 12-10-2005 à 13:57:15    

Salut seb306bzh,
 

gatsusat a écrit :


il faut utiliser le innerHTML pour rentrer du HTML dans un élément


 
Entre autres, mais 'document.getElementById['nom_de_l'id'].value = message; ' marche très bien.
 
Oximore

Reply

Marsh Posté le 12-10-2005 à 16:00:12    

oximore a écrit :


Entre autres, mais 'document.getElementById['nom_de_l'id'].value = message; ' marche très bien.
 
Oximore


La propriété value n'existe pas [:spamafote] Y'a une "nodeValue" par contre...

Reply

Marsh Posté le 12-10-2005 à 16:34:26    

FlorentG a écrit :

La propriété value n'existe pas [:spamafote] Y'a une "nodeValue" par contre...


 
Ah bon, tiens... On ne doit pas avoir la même version!?
Chez moi ça marche très bien...  :sol:  
 
Oximore

Reply

Marsh Posté le 13-10-2005 à 08:21:32    

C'est pas parce que ça marche que ça existe ;) Y'a tout un tas de propriétés propriétaires qui ne vont pas fonctionner chez tout le monde :( Essaye sous FireFox ou sous Opéra, tu verra que ça ne fonctionne pas.
 
D'ailleurs après vérification, ça ne fonctionne même pas sous IE :heink: T'es sûr de ton truc ?

Reply

Marsh Posté le 13-10-2005 à 09:34:59    

Tout d'abord merci pour vos réponses
 
alors j'ai essayé le :

Code :
  1. document.getElementById['pompier_nom'].value = message;


 
et effectivement ça fonctionne pas, c'est pareil j'ai l'erreur
 
http://img443.imageshack.us/img443/8350/18gs.png
 
J'ai essayé aussi
 

Code :
  1. document.getElementById['pompier_nom'].nodeValue = message;
  2. et
  3. document.getElementById['pompier_nom'].innerHTML = message;


 
 
 
et la version pour ie (dans le else) marche pourtant bien sous ie
 

Code :
  1. function change_texte(num){
  2. //detection du navigateur
  3. var navigateur = navigator.appName;
  4. //le message a écrire
  5. var message = '<span class=\"Style4 Style1 Style5\"><b>Nom : </b>' + tab_nom[num] + '</span>';
  6. if(navigateur=="Netscape" ){
  7.  document.getElementById['pompier_nom'].?? = message;
  8. }else{
  9.  document.all["pompier_nom"].innerHTML = message;
  10. }
  11. }


 
 :(


Message édité par seb306bzh le 13-10-2005 à 09:35:47

---------------
merci http://forum.hardware.fr !!
Reply

Marsh Posté le 13-10-2005 à 09:51:52    

Version qui marche partout :

document.getElementById("pompier_nom" ).appendChild(document.createTextNode(message));


 
Je comprend pas trop ton coup avec la différence getElementById et document.all, vu que getElementById fonctionne aussi sous IE...

Reply

Marsh Posté le 13-10-2005 à 09:52:23    

'fin faut aussi gérer le remplacement du texte, là ça ajoute bêtement...

Reply

Marsh Posté le 13-10-2005 à 09:52:23   

Reply

Marsh Posté le 13-10-2005 à 09:52:59    

Donc finalement, on utilisera, que ce soit sous IE ou sous le reste :

document.getElementById("pompier_nom" ).innerHTML = message


Reply

Marsh Posté le 13-10-2005 à 12:27:11    

Tien tiens,
 
De fait, j’ai essayé ma technique avec ta page, mais ça ne donne rien.
Pourtant j’en ai où cela marche très bien.
En fait, il y a une différence et c’est peut-être pour cela :
Je fais une réinitialisation d’un formulaire manuellement, j’entends par là que je simule un bouton ‘reset’.  
Dans les différents champs de mon formulaire, il y a un champ ‘function’ et comme c’est un mot spécial, la commande  

Code :
  1. document.formulaire.function.value

créait des problèmes. Je suis donc passé par

Code :
  1. document.getElementById(‘function’).value = ‘’ ;

et cela marche très bien.
 
J’imagine que cela vient du fait que c’est un champ d’un formulaire.
Sinon, le

Code :
  1. innerHTML

fonctionne très bien.
 
A+
Oximore

Reply

Marsh Posté le 13-10-2005 à 13:46:46    

oximore a écrit :

Code :
  1. document.formulaire.function.value

créait des problèmes.


Ca c'est l'ancienne méthode en fait... Qui n'existe pas dans le DOM...
 

oximore a écrit :

J’imagine que cela vient du fait que c’est un champ d’un formulaire.


Voilà, les éléments de type input ont une propriété "value"...

Reply

Marsh Posté le 14-10-2005 à 10:31:26    

Merci FlorentG ça fonctionne nikel :)
 
merci à toi aussi oximore ;)
 
A+


---------------
merci http://forum.hardware.fr !!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed