Aller au contenu

replaceData avec éléments XHTML


Bastien

Sujets conseillés

Bonjour à tous!

J'ai un petit problème que je n'arrive pas à résoudre. Le voici:

J'ai une fonction en Javascript qui fait un replaceData sur un div.

document.getElementById(divId).firstChild.replaceData(0, longueurCible, texte);

La variable texte contient des informations ainsi que des éléments XHTML (par exemple des <br /><span>, etc.).

Tout s'affiche, mais c'est exactement comme déclaré (c'est-à-dire qu'on voit les éléments (ex: <br /> au lieu d'un saut de ligne)).

Quelqu'un pourrait m'aider sur ce coup?!??? :blink:

merci!

Modifié par Bastien
Lien vers le commentaire
Partager sur d’autres sites

Heu je n'y connais pas grand chose en XHTML mais le petit espace entre <br et /> serait peut être le problème ???? Testez on ne sait jamais . ( ou peut être un pb de quote ??? )

Modifié par nicobillou
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Rebonjour,

Merci pour ta réponse, nicobillou. Les <br /> ont vraiment un espace.

Voici un exemple simple:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>

<title>Exemple qui ne fonctionne pas!</title>

<script type='text/javascript'>
<!--
function rempl_text(divId,texte)
{
var longueurCible;
//longueur du texte
longueurCible = document.getElementById(divId).firstChild.length;
document.getElementById(divId).firstChild.replaceData(0, longueurCible, texte);
}
//-->
</script>

<style type='text/css'>
html, body{height: 100%; font: 12px arial; background: #8298A8}
#menu {position: absolute; left: 0; width: 200px; height: 100%; padding: 10px; background: #fff}
#contenu {height: 100%; margin: 0 0 0 220px; padding: 10px; background: #eee}
</style>

</head>

<body>

<div id='menu'>
<span onclick="rempl_text('contenu','Le<br />contenu<br />a<br />changé<br />');">cliquez ici</span>
</div>

<div id='contenu'>
Voici le texte qui changera.
</div>

</body>
</html>

Ce code est fonctionnel (même si la fonction ne fonctionne pas comme je le voudrais) :mad2:

Si vous avez des suggestions....

Merci!

Modifié par Bastien
Lien vers le commentaire
Partager sur d’autres sites

Salut

Pas trop le temps de tester, mais as-tu essayé de créer un noeud avec document.createTextNode ?

var machin = document.createTextNode("le<br/>contenu<br/>a<br/>changé");

puis d'utiliser ta variable"machin" ensuite.

Ou encore en n'utilisant aucun (X)HTML et en ne construisant tes éléments (divs "menu" et "contenu") qu'en JS, c'est-à-dire avec document.createElement, setAttribute, appendChild, etc.

Si oui, qu'est ce que ça donne ?

À part ça, l'espace dans <br/> est loin d'être obligatoire car c'est soi-disant pour une compatibilité Netscape 4 (qui trébuche sur les slashs de balises uniques si ils se sont pas précédés d'un espace).

Déjà que ce navigateur est quasiment mort, en plus il ne sait pas lire l'XHTML envoyé en tant que tel. Et lorsqu'on envoie à un navigateur de l'XHTML avec un type MIME HTML, son moteur de rendu enlève automatiquement les slashs finaux car c'est pour lui une infâme bouillie sans queue ni tête.

Donc si on veut vraiment garder une compatibilité NS4, on lui envoie de l'HTML pur... mais on ne se donne pas bonne conscience en mettant des espaces :rolleyes:

Enfin.. à mon humble avis ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...