11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un petit souci avec du javascript :
j'ai une collection de liens qui peuvent être mis à jour en cliquant sur un lien "e". lorsque l'on clique dessus, on ne recharge pas la page, mais un formulaire avec deux cases texte apparaissent et l'utilisateur peut mettre à jour la description du lien et l'url.

Voici le code :


....
<span id='adr$i'>
   <a href=".$row["url"]." id='lien$i'>".$row["description"]."</a>
</span>
 - [<a href='#' onclick='editeadr(".$row["id"].", lien$i);'>e</a>]
...

et voici le javascript :

function editeadr(id, actual) {
	elem = document.getElementById("adr"+id);
	elem.innerHTML = 	"<input id='liensA'"+id+" maxlength=\"30\"type=\"text\" value=\"" + actual.innerHTML  + "\" size=\"30\" onkeypress=\"return guardaEnterADR(this,event," + id + ")\"  onblur=\"return guardaBlurADR(this,event," + id + ")\"  /> <br /><input id='liensB'"+id+ "maxlength=\"30\"type=\"text\" value=\"" + actual + "\" size=\"30\"  onkeypress=\"return guardaEnterADR(this,event," + id + ")\"  onblur=\"return guardaBlurADR(this,event," + id + ")\"  />";
	 
	elem.firstChild.focus();
}

NB : la fonction guardaEnterADR met à jour la page html (remplace les 2 cases texte par ce qu'on a tapé dedans).

ça marche bien sauf que si je fais 2 fois de suite, ça me récupère la valeur initiale !

Ex :

au départ j'ai :

url = http://www.gooogle.fr
description : un moteur de recherche

je mets à jour avec :
url = http://www.google.fr
description : un moteur de recherche

sur la page, la modif est bonne, mais si je reclique sur E pour éditer alors dans mes 2 cases texte, j'obtiens les valeurs de départ :
url = http://www.gooogle.fr
description : un moteur de recherche

Ce qui est étrange, c'est que ça fonctionne avec IE !

Grrrrr ...
est-ce qu'il n'y aurait pas une fonction javascript pour synchroniser ? En fait la fonction :
document.getElementById();
me renvoie ce qu'il y a au départ dans l'élément et pas ce par quoi je l'ai remplacé ! (ma phrase est compliquée Smiley cligne )

Est-ce que qqn pourrait m'aider ?
Merci et bonne année !
Modifié par sophie67 (31 Dec 2005 - 15:28)
pfiou, j'ai pas trouvé exactement à faire ce que je voulais. J'ai contourné le problème ... et ça marche !
Mais je pense que le panda rouge a réellement un problème avec InnerHTML (il met à jour en apparence, mais quand on utilise des fonctions pour récupèrer la valeur, il renvoie l'ancienne valeur ! )
Bonne année !