[DOM] Remplacement d'un input par un autre [Résolu]

Remplacement d'un input par un autre [Résolu] [DOM] - HTML/CSS - Programmation

Marsh Posté le 19-05-2005 à 11:36:36    

Dans le cadre d'un script greasemonkey, je souhaite remplacer dynamiquement dans une page HTML des éléments input de type image par des élements input de type bouton.
 
Contexte:  Firefox 1.0.4
 
Première tentative :  
- remplacement du noeud par un nouveau, du bon type :
[code]// input est le noeud que je veux remplacer
input.parentNode.replaceChild(input, new HTMLInputElement());[/code
 
Ca se vautre lamentablement avec une exception assez obscure.
Erreur : uncaught exception: [Exception... "Object cannot be created in this context"  code: "9" nsresult: "0x80530009 (NS_ERROR_DOM_NOT_SUPPORTED_ERR)"  location: "<unknown>"]
 
Seconde tentative :
- remplacement des attributs type et value du node.
 
Ca merdouille et je me retrouve avec un bouton qui n'a pas un aspect de bouton.
 
Quelqu'un aurait une idée sur la façon dont c'est faisable staffaire  [:huit]  ? Ou sur le pourquoi des échecs de mes deux tentatives ?
J'ai rien trouvé dans les docs DOM suivantes :
http://www.mozilla.org/docs/dom/domref/ (archi incomplète, supair  [:huit])
http://xulplanet.com/references/ob [...] ement.html (indique que tous les éléments ne peuvent pas être instanciés directement, mais ne précise pas explicitement lesquels, re-supair  [:huit])
 
Merci par avance.


Message édité par KrisCool le 19-05-2005 à 12:25:35

---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 19-05-2005 à 11:36:36   

Reply

Marsh Posté le 19-05-2005 à 11:42:02    

C'est tres moche, mais passe par le outterHTML.
Tu reccuperes ton node et tu ecrases le outterHTML.
j'ai fait ca pour remplacer dynamiquement des elements d'un menu.

Reply

Marsh Posté le 19-05-2005 à 12:13:36    

KrisCool a écrit :

Code :
  1. input.parentNode.replaceChild(input, new HTMLInputElement());



 :heink:  
 
document.createElement('INPUT'), mieux [:aloy]
parce que c'est une fonction du DOM, donc c'est fait pour ça
 
et le problème vient du fait que t'as inversé les nodes dans replaceChild :whistle:  

Citation :

x.replaceChild(y,z)
Replace node z, a child of node x, by node y.


source
 
Pour une vraie référence sur le DOM (cross browsers en plus, donc c'est utile en dehors des scripts GM), le meilleur site que je connaisse est clairement Quirksmode, ce site est LE truc indispensable, il y a tout sur tous les éléments du JS (ou presque) :o


Message édité par masklinn le 19-05-2005 à 12:17:58

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-05-2005 à 12:19:30    

Merci Masklinn [:petrus75]


---------------
Loose Change Lies | Bars | Last.fm
Reply

Marsh Posté le 19-05-2005 à 14:26:04    

Il me semble que le nom des balises doit etre en minuscules quand on utilise createElement, non ?

Reply

Marsh Posté le 19-05-2005 à 14:54:16    

Cerel > il m'a toujours créé ce que je lui demandais pour le moment [:petrus75]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

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