Page 1 sur 1

problème dans boucle javascript

Publié : 26 déc. 2006, 17:22
par ECO
bonjour à tous,

j'ai un petit problème dans une boucle, je crée des liens (onclick) sur des photos (pour voir l'original et pas le thumb) via un script mais le problème c'est que j'ai toujours le lien du dernier tour de boucle (sur tous les liens)

voici le script :

Code : Tout sélectionner

function creatLink() {
	var liens = document.getElementsByTagName('a');
	for (var index = 0; index < liens.length; ++index) {
		var lien = liens[index];
		var image = lien.firstChild;
		if (image.nodeName == "IMG") {
			var source = image.src;
			var resultat = source.replace("thumbs", "originals");
			lien.onclick = function() {
				window.open('popup.php?fichier=' + resultat ,'' ,'toolbar=no, fullscreen=no, scrollbars=no, resizable=no, width=550, height=400,');
				return false;
			}
			
			lien.title = ('photo ' + index + ' - Cliquez pour agrandir');
		}
	}
}
merci d'avance pour votre aide, qui sera la bien venu j'en suis sûr

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Publié : 26 déc. 2006, 19:06
par calimo
Un noeud texte dans ton HTML ? Je ne crois pas que c'est un enfant, mais qui sait ? On peut voir le code HTML en fonctionnement ?

Sinon, plutôt que

Code : Tout sélectionner

var liens = document.getElementsByTagName('a');
il existe

Code : Tout sélectionner

document.links
(je crois que tu évites les ancres).
Peut-être aussi qu'il vaudrait mieux définir une classe pour ces images et sélectionner selon la classe, plutôt que de risquer de sélectionner de mauvais liens…

PS : double ton onclick d'un onkeydown pour ceux qui naviguent au clavier :wink:

Edit : c'est pas ++index dans ta boucle for, c'est index++ :wink:

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.1.1) Gecko/20061208 Firefox Firefox/2.0.0.1

Publié : 26 déc. 2006, 19:21
par ECO
alors :

le site (l'intérêt n'est pas très grand ici mais c un petit exercice pour moi :)

il n'y a aucun problème avec les noeuds, ou l'incrémentation de la boucle c'est dans function() à ce que j'en crois que le problème réside. Pour preuve si je rajoute
x = createTextNode(image.src) &
appendChild(x) (là où ca va bien, il me sort bien la liste de source attendue !

merci pour les tuyaux !!

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

Publié : 27 déc. 2006, 11:30
par Benoit
Je pense que tu écrases la fonction d'ouverture à chaque fois (je ne suis pas assez spécialiste pour comprendre pourquoi).

Tu ferais mieux d'en faire une fonction nommée externe, et de l'appeler simplement avec un paramètre. D'une manière générale il vaut mieux toujours nommer ses fonctions, ça te permet de les suivre avec Firebug par exemple.

Publié : 27 déc. 2006, 15:12
par ECO
benoit,

j'ai déjà essayé ceci :
...
lien.onclick = popUp(resultat);
...
popUp(fichier) { // exact contenu de function()
window.open(fichier....
}

là, il m'ouvre tous les popups au chargement de la page! et plus rien ne se passe au click
Remarque, j'appelle creatLink au chargement de la page.