11548 sujets

JavaScript, DOM et API Web HTML5

Pages :
(reprise du message précédent)

xml et javascript, c'est une belle source de prise de tête...

depuis que je suis passé à xml/xsl, le tout gêré par php, mes migraines se font moins fréquentes... Smiley ravi

bon, en fait, moi, je comprends pas pourquoi ça :
.firstChild.firstChild.nodeValue


un seul firstChild devrait suffire, sinon, cible mieux ton élément.
Modifié par Lisarael (24 Apr 2005 - 15:29)
Non justement Smiley cligne
J'avais mis .firstChild parceque c'était ce qui devait fonctionner logiquement, mais nan, quedal, et avec 2 firstChild ça fonctionne...

Je pige quedal, y a rien de logique, c'est halucinant !!!!!

Je peux pas trop passer à la gestion via PHP, c'est pour un système de bulle d'aide géré par JavaScript, PHP ne va rien pouvoir m'apporter Smiley ohwell

Je vais être obligé de passer par autre chose qu'XML pour gérer mes textes d'aides je crois... c'était pourtant bien adapté...
Pfff
Administrateur
Olivier a écrit :
Je vais devenir fou...

Je relance le navigateur, je relance le script et là il comprend plus items[ i].firstChild.firstChild.nodeValue; alors qu'avant de relancer le script ça fonctionné Smiley sweatdrop

Et le fichier XML est bien chargé puisqu'il trouve bien une autre partie du script...

/me sature !

En programmation, ça ressemble à une variable qui aurait une valeur avant son utilisation (parce que tu l'utilises 5 fois/minute pour déboguer/tester!), non remise à zéro ou null au début du programme et du coup, le comportement est pas celui attendu!

Pour l'histoire du firstchild of firstchild, c'est le cas avec un retour à la ligne entre chaque balise ET un noeud tenant sur une ligne (problème que tu avais à la page1)?
Modifié par Felipe (24 Apr 2005 - 16:32)
J'ai un gros problème avec ces foutu retour à la ligne et tout ça...

Je tente de créer un Array comme proposé par Lisaraël

function createArray() {
	var XMLtree = new Array();
	
	var racine = XMLdoc.documentElement;
	var branches = racine.childNodes;
	
	for (var k = 0; k < branches.length; ++k) {
		XMLtree[k] = branches.nodeValue;
	}
	alert(branches.length);
	alert(XMLtree.length);
	for (var l = 0; l < XMLtree.length; ++l) {
		alert(XMLtree[l]);
	}
}


Je fais des alert pour controler le résultat.
Les 2 1er, me renvoient 7
et le alert dans la boucle me renvoi à chaque fois (7) underfined Smiley ohwell

Mon fichier XML est comme ceci :

<?xml version="1.0" encoding="iso-8859-1"?>
<help>
	<item id="rss">
		<description>RSS est .......</description>
		<related url="http://localhost/helps/rss.php" />
	</item>
	
	<item id="login">
		<description>Pour vous loguer, ...</description>
		<related url="http://localhost/helps/login.php" />
	</item>
	
	<item id="glossaire">
		<description>Le glossaire est  ...</description>
		<related url="http://localhost/helps/glossaire.php" />
	</item>
</help>

Donc, racine, c'est <help>, là on est d'accord,
Et branches c'est donc <item id="rss"> (1), <item id="login"> (2), <item id="glossaire"> (3) et donc les 4 autres sont des retour à la ligne ??
Mais pourquoi est-ce que j'ai undefined à chaque fois ??
Donc, mes 4 derniers noeud seraient le \n après <help>, et les 3 \n après chacun des <item> c'est ça ?
Mais ça n'explique pas pourquoi je peux pas avoir de valeur Smiley ohwell
branches[l].firstChild.nodeValue has no properties en plus Smiley ohwell
Olivier a écrit :
Donc, mes 4 derniers noeud seraient le \n après <help>, et les 3 \n après chacun des <item> c'est ça ?
Mais ça n'explique pas pourquoi je peux pas avoir de valeur Smiley ohwell
branches[l].firstChild.nodeValue has no properties en plus Smiley ohwell



les \n ne sont pas pris en compte, ça, j'en suis sûr, enfin presque... lol

et si tu faisais des alert de tes childNodes[x], pour voir à quoi ça correspond ?
Ca fait
a écrit :

[object text]
[object element]
[object text]
[object element]
[object text]
[object element]
[object text]


Pour les \n, c'est pas ça que je voulais dire, je voulais dire les retour à la ligne dont parlaient Felipe et Bobe

J'avais oublié un truc dans mon remplissage de tableau
Donc, là j'ai ça :


	for (var k = 0; k < branches.length; ++k) {
		XMLtree[k] = branches[k];
	}

Ca me rempli mon tableau avec object text ou object element.
Mais impossible d'accéder à la valeur de object text par exemple, ça me met du vide, et object element me met null.

C'est bien avec .nodeValue que je peux accéder à ces valeurs ??
(testé en mettant branches[k].nodeValue dans la boucle ci dessus)
Modifié par Olivier (24 Apr 2005 - 18:22)
J'ai pas été super clair là Smiley biggol

Je récapitule :


	for (var k = 0; k < branches.length; ++k) {
		XMLtree[k] = branches[k];
	}


Ca ça me rempli le tableau avec :
a écrit :

[object text]
[object element]
[object text]
[object element]
[object text]
[object element]
[object text]


Et ça

	for (var k = 0; k < branches.length; ++k) {
		XMLtree[k] = branches[k].nodeValue;
	}


Ca me rempli le tableau avec ça
a écrit :

(rien)
null
(rien)
null
(rien)
null
(rien)


(rien) c'est pour dire que ça écris rien du tout, pas que ça écrit le mot rien ^^
Je m'en suit finalement sorti Smiley langue

Non sans peine Smiley cligne

Je me suis basé sur cet exemple :
http://www.quirksmode.org/dom/importxml.html

Et à partir de là, tout roule Smiley cligne
Pour eviter le bordel des noeuds qui n'en sont pas, il faut tester le nodeType, 1 => tag, donc, si c'est différent de 1, on passe au suivant.

Ensuite, pour le nodeValue et tout ça, j'ai pas trop capté, je pense avoir fait le même genre de manip que dans l'exemple... Enfin bref, ça fonctionne maintenant Smiley cligne

J'ai aussi fait le truc du test pour vérifier que le fichier était chargé, il y a d'ailleurs un exemple dans le lien donné ci dessus si je me rapelle bien.

Voilà !
Pfiiou ^^
Pages :