problème dans boucle javascript

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 !
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

problème dans boucle javascript

Message 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
choisir c'est renoncer !
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message 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
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message 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
choisir c'est renoncer !
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
ECO
Salamandre
Messages : 27
Inscription : 26 mars 2004, 20:33

Message 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.
choisir c'est renoncer !
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Bing [Bot] et 1 invité