11548 sujets

JavaScript, DOM et API Web HTML5

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

Salut,

En fait, plutôt que de répéter des blocs de code, il vaut mieux passer tes id en tant qu'argument de la méthode alertLink :
var Script, Sp, dernierLien;

Script = function() {};

Sp = Script.prototype =
{
	connect: function(oElem, sEvType, fn, bCapture)
	{
		return document.addEventListener ?
			oElem.addEventListener(sEvType, fn, bCapture):
			oElem.attachEvent ?
				oElem.attachEvent('on' + sEvType, fn):
				false;
	},

	alertLink: function(sId)
	{
		var oUl, aAs, oLastA;

		oUl = document.getElementById(sId);
		aAs = oUl.getElementsByTagName('a');
		oLastA = aAs[aAs.length - 1];

		return alert(oLastA.firstChild.firstChild.nodeValue);
	},

	init: function()
	{
		Sp.connect(window, 'load', function() { Sp.alertLink('first_level'); }, false);
		Sp.connect(window, 'load', function() { Sp.alertLink('second_level'); }, false);
		Sp.connect(window, 'load', function() { Sp.alertLink('third_level'); }, false);
	}
};

var dernierLien = new Script;
dernierLien.init();
La méthode connect permet d'affecter un gestionnaire d'événement au chargement de la page.

C'est, ici au sein de la méthode init, qu'on gère ces appels. Cette méthode fait office de chef d'orchestre du script.

Dans ce tuto, je parle un peu de tout ça. Smiley cligne
Modifié par koala64 (19 Sep 2007 - 05:57)
Ouep, même si j'ai réussi à corriger la version d'hier*, ton système de "chef d'orchestre" a l'air quand même méchamment mieux ficelé que mon jeu de legos.

Une fois encore je te remercie pour tous ces conseils et tuyaux.

Je crois que ton tuto va devenir ma nouvelle lecture de chevet. Smiley cligne


* en fait l'essentiel de mes erreurs provenaient des éléments sur lesquels j'appelais la méthode getElementsByTagName qui n'en étaient pas vraiment (des éléments).
Cette méthode ne renvoi apparemment rien si tu essaies de l'appliquer sur un tableau d'éléments. Par contre, sur un des éléments[isolé] du tableau, là ça marche de suite beaucoup mieux.
Modérateur
Dans tes exemples précédents, tu passais par le tableau childNodes. Celui-ci renvoie tous les noeuds enfants d'un noeud et ce, quelquesoit leur type (nodeType). Un noeud élément est de type 1, un noeud texte est de type 3, etc...

getElementsByTagName s'applique à un élément uniquement et ça t'obligeait donc à filtrer les résultats parmi le tableau childNodes.

Etant donné que tu sais ce que tu cherches (dernier lien d'une liste avec un certain id), tu peux, comme dans l'exemple que je t'ai montré, pointer directement dessus.
Modifié par koala64 (19 Sep 2007 - 11:32)
Pages :