11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour a tous,

Je travaille sur un projet de fin d'étude, et ça fait maintenant plus de 5 heures que je suis bloqué.

Voila mon code :

function menu(balise){
	    var titre = xmlDoc.getElementsByTagName(balise);
	    var contenu = document.getElementById('centre').innerHTML;
	    document.getElementById('menuGauche').innerHTML = "";
	    for (i=0;i<titre.length;i++){
         document.getElementById('menuGauche').innerHTML += "<a href=#titre"+i+">" + titre[i].firstChild.data + "</a><br><br>"
         rch = new RegExp(titre[i].firstChild.data,'gi');
         contenu = contenu.replace(rch,"<a name='titre" + i + "'/>" + titre[i].firstChild.data + "</a>"); 
      }
          document.getElementById('centre').innerHTML = contenu;	   
}



Explications : J'ai un document XML qui est traité par un moteur Php et qui est transformé en HTML, cet HTML est affiché au sein du div 'centre'.

Le but de ma fonction est de fabriquer un menu grace à une balise du document XML, cette partie fonctionne trés bien et mon menu est bien généré dans mon div menuGauche. les liens 'href' sur ce menu sont aussi bien présents. Mon problème est d'insérer au sein du div 'main' les ancres relatives au menu. Je réalise ceci avec la fonction replace.

Je pense avoir identifié le problème, cela doit venir du fait que pour ma fonction replace, je lui demande de rechercher une chaine qui prend sa source du XML, et je lui demande de rechercher cette chaine dans mon code HTML. Ma fonction replace marche car quand je lui passe en paramètre a analyser le titre de mon menu directement, l'ancre est bien realisée et je peux y acceder grace a mon menu.

Voila, j'espère avoir été assez clair. Merci de m'aider à avancer.[/i][/i][/i]
Modifié par tomowok (04 Apr 2007 - 23:23)
Bon j'ai en fait trouver la Réponse, la chaine récupérer du XML comportait des espaces indésirables.

J'ai pu corriger le problème avec :

var tmp = titre[i].firstChild.data;
         var ancre = tmp.replace(/\n/,"");
         var ancre = ancre.replace(/\n/,"");
         contenu = contenu.replace(ancre,"<a name='titre" + i + "'/>" + ancre + "</a>"); 


Voila Smiley biggrin [/i]