11548 sujets

JavaScript, DOM et API Web HTML5

Je me suis déjà un peu initié à la POO avec des langages plus évolués mais là j'ai un peu de mal avec javascript... Smiley ohwell

Ma classe est un parser XML
function xmlParser()
{
	/* je ne sais pas trop quoi mettre dans le constructeur
    peut être this.xmlDoc = xmlDoc avec xmlDoc en paramètre mais ça ne marche pas non plus */
}

Puis vient ensuite la méthode loadXML et là vient le problème ce qui est un peu normale...
xmlParser.prototype.loadXml = function(file)
{
	/* chargement du fichier XML */
	try {
		// navigateur basé sur Gecko
		if (document.implementation && document.implementation.createDocument)
		{
			this.xmlDoc = document.implementation.createDocument("", "doc", null);
			this.xmlDoc.onload = function() { this.loaded = true; }
			this.xmlDoc.load(file);
		}
     // il y a d'autres tests pour IE et XMLHTTPRequest mais on va faire court.
	} catch (e) {
		alert(e);
		return false;
	}
	
	return true;
}

Mon problème c'est qu'ainsi je me retrouve avec une erreur capté par catch
a écrit :
TypeError: xmlDoc has no properties
car en fait je n'arrive pas à définir xmlDoc afin de la trimbaler dans toutes les méthodes de la classe...

Par contre si je fais
var xmlDoc = document.implementation.createDocument("", "doc", null);
xmlDoc.onload = function() { this.loaded = true; }
xmlDoc.load(file);

Je n'ai évidemment pas d'erreur mais ma variable n'est visible que dans la méthode loadXml...

En clair, comment puis-je définir proprement xmlDoc (ou toute autre variable) afin de pour l'utiliser dans toutes les méthodes de la classe Smiley sweatdrop
Modifié par Spack (04 Nov 2005 - 12:34)
Bonjour,
Voici comment je définis habituellement mes classes JavaScript.

Bon ça n'a rien à voir avec ton parseur, là c'est juste un exemple de ce qu'on peut faire :


function MonObject (p1, p2) {
this.p1 = p1;
this.p2 = p2;
this.func1 = func1;

function func1 () {
alert(this.p1);
alert(this.p2);
}
}


On peut aussi, théoriquement, définir les méthodes en dehors de la classe, avec ce système.
Smiley sweatdrop J'ai enfin réussi à trouver le problème j'ai redéfini les membres de ma classe puis j'ai corigés quelques erreurs dans une fonctions qui ne traitait pas xmlDoc comme il le faut et donc me renvoyais une erreur... Smiley lol
Sinon je vous présente aussi (si vous ne le connaissiez pas déjà) Venkman un très bon débuggeur sous forme de plug-in pour Firefox et le navigateur Mozilla grâce auquel j'ai pu corriger mes erreurs...De plus il y a même une très bonne doc pour apprendre à l'utiliser...

Merci encore de votre aide...