caractère nul

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !

Modérateur : Asumbaa

Répondre
arno. sans ses cookies

caractère nul

Message par arno. sans ses cookies » 27 août 2005, 18:47

Bonjour,
j'aimerais bien savoir s'il est possible de définir un caractère nul en XML.
par exemple :

Code : Tout sélectionner

<span id="toto"></span>
je fais

Code : Tout sélectionner

 getElementById("toto").childNodes[0].nodeValue
et j'ai une erreur comme quoi childNodes[0] n'existe pas ; et moi j'aimerais bien ne pas avoir d'erreur quand mon span est vide est qu'il me renvoie la chaine vide.
Si je mets

Code : Tout sélectionner

<span id="toto">&null;</span>
&null; et

Code : Tout sélectionner

<!ENTITY null "">
, j'ai la même erreur.

Est-ce quelqu'un a une idée de comment je pourais faire ?
merci beaucoup

PsyDk
Lézard à collerette
Messages : 317
Enregistré le : 23 sept. 2003, 09:41

Message par PsyDk » 28 août 2005, 13:23

Sans texte dans le span, il n'y aura pas de nœud créé dans l'arbre du document. Il va donc te falloir créer le nœud texte dynamiquement s'il n'existe pas.

Code : Tout sélectionner

	var span = document.getElementById("toto");
	var nodeText = null;
	if( span.childNodes.length == 0)
	{
		nodeText = document.createTextNode("");
		span.appendChild(nodeText);
	}
	else
	{
		nodeText = span.childNodes[0];
		if( nodeText.nodeType != 3)
		{
			alert("Pas un nœud texte");
		}
	}
	
	nodeText.nodeValue = "blabla";
Tu peux même peut-être créer le span dynamiquement aussi.

arno.
Varan
Messages : 1347
Enregistré le : 19 août 2004, 12:26

Message par arno. » 28 août 2005, 13:38

c'est gross modo ce que j'avais fait. Mais je me demandais juste si il y avait un moyen de faire sans un test if( span.childNodes.length == 0)
(c'est que je suis un peu paresseux moi :roll: )

ben merci pour cette précision. :D

PsyDk
Lézard à collerette
Messages : 317
Enregistré le : 23 sept. 2003, 09:41

Message par PsyDk » 28 août 2005, 13:49

Je m'étais penché sur la question aussi ;) Sinon tu peux créer une fonction « GetTextNodeOrCreateItIfItDoesNotExist() » :mrgreen:

arno. sans ses cookies

Message par arno. sans ses cookies » 28 août 2005, 14:13

PsyDk a écrit :GetTextNodeOrCreateItIfItDoesNotExist()
trop peur de m'embrouiller les doigts sur mon clavier :mrgreen:

Anubis
Arias
Messages : 1
Enregistré le : 18 août 2003, 23:20

Message par Anubis » 12 sept. 2005, 22:40

Bon le sujet est peut-être un peu vieux mais j'ai une solution. Il existe la propriété innerHTML en lecture et en écriture dans tous les nœuds HTML, celle-ci contient le code HTML situé à l'intérieur de la balise représentée par le nœud manipulé.

Code : Tout sélectionner

var plop0 = document.getElementById("plop0");
var plop1 = document.getElementById("plop1");

plop0.innerHTML = "Coucou les gens";
plop1.innerHTML = "Coucou les autres gens";
Ce code là fonctionne très bien chez moi sur Safari 2 et Firefox 1.5 avec le contenu HTML suivant :

Code : Tout sélectionner

<p><span id="plop0">Plop</span></p>
<p><span id="plop1"></span></p>

<p><input type="button" onclick="EnterTextInPlopSpans()" value="Test"/></p>
J'utilise généralement la propriété innerHTML pour manipuler ma page HTML car c'est très souvent plus simple que de manipuler l'arbre DOM.

Édition : PsyDk m'indique que si le document est servi correctement en XHTML (avec un type MIME application/xhtml+xml), alors cette technique ne fonctionne pas dans Firefox avant la version 1.5 et ne fonctionne pas du tout dans Safari.
virtual void Life() = 0;

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité