Fermer2
JonasLe 22/05/2008 à 10:55
Je rencontre un problème avec la fonction replace en javascript.

Je veux modifier la valeur d'un input dans une div. Je ne peux pas le faire via getElementById car cette fonction ne s'applique pas sur la div mais au document. Hors comme je charge la div par ajax, elle ne fait pas partie du document (le fait de changer la page par innerHTML() ne reconstruit pas les noeuds DOM de la page). C'est donc pourquoi je dois faire appel à replace().

Je stocke le contenu HTML d'une div dans une variable, je parcoure cette variable avec replace pour changer un value="" en value=argument. Seulement rien n'est remplacé! J'ai rajouté une condition avec indexOf pour voir si ma chaine est au moins trouvée, et ça me répond que oui! Vraiment je sais plus quoi faire.

Le code:

function putReferer(txt,ref) {

	if (txt.indexOf('value=""') != -1) {         // test d'existence de la chaine
		txt.replace(/value=\"\"/g, "value=\""+ref+"\"");
	}
	return txt;
}


et je l'appelle comme ça:

page = xmlhttp.responseText;     // code html de la page a charger en ajax (source)
element.innerHTML = putReferer(page,"ma valeur que je voudrai mettre")         //element.innerhtml c'est le code de ma div à modifier (destination)


Vraisemblablement le probleme se trouve dans ma fonction putreferer. Peut etre que le replace ne gère pas les auts de ligne dans les variables? C'est marqué nul par dans la doc!

Merci de votre aide!


PS: Je sais que le innerHTML() c'est le mal mais ça reste une solution rapide qui permet une lecture plus aisée du code.