IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Pb application lien


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut Pb application lien
    Bonjour,

    Linux Pratique n°33 proposait de faire sa galerie photo comme suit :

    HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div id="galerie">
        <div id="minis">
    <!--Attention, les chemins et noms des photos sont à remplacer par vos propres fichiers!!-->
            <div class="miniBox"><a href="photos_galerie/cascade.jpg" title="La cascade du Nideck"><img src="photos_galerie/miniatures/cascade_small.jpg" alt="cascade du Nideck"></a></div>
            <div class="miniBox"><a href="photos_galerie/foret.jpg" title="Chemin forestier au printemps"><img src="photos_galerie/miniatures/foret_small.jpg" alt="foret au printemps"></a></div>
        </div>
     
        <div id="photoBox">
            <h2>La cascade du Nideck</h2>
            <p><img id="img_originale" src="photos_galerie/cascade.jpg" alt="cascade du Nideck" title="La cascade du Nideck"></p>
        </div>
     
    </div>
    Avec le JavaScript suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    function display_img()
     
    {
    	// On assigne à la variable "links" tous les éléments de la page qui ont un <a> pour balise, soit les liens, ce qui correspond à toutes les photos de notre galerie :
    	var links = document.getElementsByTagName('a');
     
    	// On récupère l'élément ayant pour identifiant "img_originale" (c'est notre photo en taille normale) que l'on affecte à la variable "big_photo" :
    	var big_photo = document.getElementById('img_orig'); 
     
    	// On récupère le titre de la photo de taille normale, que l'on affecte à la variable "titre-photo" :
    	var titre_photo = document.getElementsByTagName('h2')[0];	
     
    	// On effectue une boucle parcourant l'ensemble des liens contenu dans "minis" :
    	for (var i = 0 ; i < links.length ; ++i) {
     
    		// Dès que l'utilisateur clique sur ces liens :
    		links[i].onclick = function() {		
     
    			// On change l'attribut src de la grande image en le remplaçant par la valeur du lien :
    			big_photo.src = this.href;
    			// De même pour le texte alternatif :
    			big_photo.alt = this.alt;
    			// De même pour le commentaire info-bulle :
    			big_photo.title = this.title;
    			// On change le titre h2 de la grande photo :
    			titre_photo.firstChild.nodeValue = this.title;
    			// Et on s'assure que l'action réelle du lien ne sera pas exécutée :
    			return false;
    		};
    	}
    }
     
    // Enfin, on appelle la fonction "display_img" au chargement de la page :
    window.onload = display_img;
    Bien. J'aurais voulu l'adapté à une galerie avec plusieurs pages. Dont Bouton Précédent et Suivant qui vont bien.

    Mais !!! Mon JavaScript s'applique à toute les balise <a> !!!...

    N'y connaissant pas grand chose en Javascript, mais croyant bien faire, j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class=photo href....
    et remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var links = document.getElementsByTagName('a');
    
    par
    
    var links = document.getElementById('photo');
    Mais ca ne marche pas...

    Quelqu'un aurait-il une idée ?

  2. #2
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    salut,

    Comme tu peux le comprendre par toi meme, la fonction getElementById(); te retourne un élément en fonction de son id...
    Or toi tu écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a class=photo href....>
    var links = document.getElementById('photo');
    'photo' est un nom de classe css et non un id, c'est pour cela que ça ne fonctionne pas

    Alors change class=photo en id='photo' (avec des quotes c'est plus propre).

  3. #3
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Changement fait. Mais ça ne fonctionne toujours pas...

  4. #4
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    var links = document.getElementsByTagName('a'); //Te retourne un tableau d'éléments

    var links = document.getElementById('photo'); //Te retourne un seul élément.

    Donc le traitement apporter à ta variable links n'est plus bon

  5. #5
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Citation Envoyé par Badaboumpanpan
    Changement fait. Mais ça ne fonctionne toujours pas...
    Bon le coup de l'id sur le a href ça fonctionne très bien chez moi en tout cas, le problème ne vient pas de là

  6. #6
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Le fait qu'il y ait du PHP est-ce que ca peut venir de là ?

  7. #7
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Citation Envoyé par krolineeee
    Bon le coup de l'id sur le a href ça fonctionne très bien chez moi en tout cas, le problème ne vient pas de là
    Mais du coup, tu as procédé avec ElementById et le tableau ? ou avec ElementsByTagName et le tableau ? etc.

  8. #8
    Membre confirmé Avatar de Badaboumpanpan
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 202
    Par défaut
    Je comprends plus... Voilà qu'en remettant le script initial (cf plus haut) plus rien ne se passe....

Discussions similaires

  1. Lancer une application à partir d'un lien web
    Par jayce_84 dans le forum ASP
    Réponses: 4
    Dernier message: 16/02/2006, 10h30
  2. [java] établir un lien avec une application java
    Par pmartin8 dans le forum Access
    Réponses: 2
    Dernier message: 19/10/2005, 14h36
  3. Comment établir un lien entre 2 applications ???
    Par loupdeau dans le forum MFC
    Réponses: 12
    Dernier message: 07/04/2005, 08h15
  4. [FLASH MX] Lien vers une application
    Par mzt.insat dans le forum Flash
    Réponses: 4
    Dernier message: 15/03/2005, 19h18
  5. [Forms6i] lien URL d'une application forms
    Par bargou dans le forum Forms
    Réponses: 4
    Dernier message: 13/12/2004, 12h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo