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 :

Comment changer la cible d'un lien


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut Comment changer la cible d'un lien
    Bonjour,

    J'ai un Slideshow qui permet d'afficher une image et si l'on clique sur suivant ou précédent l'image change.

    Le problème c'est que j'aimerais aussi changer le lien qui va avec l'image mais je n'y arrive pas.

    Mon code:

    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
    <script type="text/Javascript">
     
    var pictures = new Array ("../../image_petit1.jpg","../../image_petit2.jpg");
    var pictures_grand = new Array ("../../image_grand1.jpg","../../image_grand2.jpg");
    var pictureNumber = 0;
    var totalNumber = pictures.length; 
     
     function previous(){
      if (document.images){
         if (pictureNumber > 0) pictureNumber--
         else             
         pictureNumber = totalNumber-1
         document.images.slides.src  = pictures[pictureNumber]
     
       }
    }
     function next(){
      if (document.images){
         if (pictureNumber < totalNumber-1)  pictureNumber++
         else                    
         pictureNumber = 0
         document.images.slides.src  = pictures[pictureNumber]
    	 document.links.url_image_grand.href = pictures_grand[pictureNumber]
     
       }
     }
     
    //--></SCRIPT>
     
     
    <script> document.write('<a href="../../image_grand1.jpg" name="url_image_grand"> <img src="../../image_petit1.jpg" name="slides" height="110" border="0"> </a>')</script>


    J'ai essayé avec: document.links.url_image_grand.href = pictures_grand[pictureNumber] comme vous pouvez le voir dans la boucle next mais sa ne marche pas, quand je clique sur next l'image change mais le lien est toujours le même (image_grand1.jpg).

    Pourriez-vous me dire quesqu'il faudrait que je mette dans la boucle next pour que sa marche?

    Merci d'avance.

    Clément Birklé

  2. #2
    Membre éclairé

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Points : 803
    Points
    803
    Par défaut
    Bonjour,

    petite question : est ce que le nomùbre d'image est fixé a l'avance ?
    si c'est le cas je te conseille d'utiliser des tableaux au lieu de collection. sinon essai de regarder du cotés des Hashtables ou des HashMap je pense que ces collections seront mieux adapté a ce que tu veux faire.
    Je suis encore débutant mais personnellement j'utiliserai une HashMap avec le numéro de la photo en clé et son adresse en contenu... Du moins c'est de ce coté que je chercherai mais je suis pas sur a 100% mais c'est de ce coté que je regarderai personnellement.

    a +
    "La seule chose dont je sois certain, c'est que je doute"
    j'ai cassé ma boule de cristal veuillez être clair et précis dans vos propos
    compilateur - 1 nayah - 0
    PS : je suis un

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Oui le nombre d'image est définit à l'avance.

    Je suis vraiment débutant en javascript donc je ne comprend pas la différence entre les tableaux et collection mais je vais déjà essayer de voir du coté des Hashtables ou des HashMap. Merci pour la réponse.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Je voulais encore juste préciser que j'aimerais bien laisser le lien de départ tel quel pour un bon référencement (même principe qu'avec l'image).

  5. #5
    Membre éclairé

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Points : 803
    Points
    803
    Par défaut
    Je t'explique une collection c'est un tableaux qui n'a pas de limite réelle. C'est a dire que si tu lui définit 20 cases et que tu rentre 30 valeurs, il va étendre son espace mémoire et passer a 30 cases...

    Par contre si tu connais le nombre d'élément il est plus sur d'utiliser un tableau qui va avoir un nombre de cases fixes. si tu as 20 images:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String tab[] = new String tab[20]
    ainsi tab[i] renvera l'adresse de l'image i+1.
    "La seule chose dont je sois certain, c'est que je doute"
    j'ai cassé ma boule de cristal veuillez être clair et précis dans vos propos
    compilateur - 1 nayah - 0
    PS : je suis un

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Là je comprend mieux ce que tu voulais dire.

    Pour en revenir au nombres d'images j'ai un petit doute sur ta première question.

    Enfaite dans mon code j'ai pas mis: var totalNumber = pictures.length; mais var totalNumber = nombre_image;

    Donc le nombre d'image est fixé par moi mais dans var pictures = new Array il y aura toujours les (2) images même si nombre_image = 1;

    Tu entends quoi par "main"?

  7. #7
    Membre éclairé

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Points : 803
    Points
    803
    Par défaut
    nombre_image ? c'est je suppose une variable que tu as défini précédemment non ?

    je me trompe peut etre mais vu que tu connais le nombre d'image perso je passerai par les tableaux... ca simplifiera ton code dans un premier temps...
    "La seule chose dont je sois certain, c'est que je doute"
    j'ai cassé ma boule de cristal veuillez être clair et précis dans vos propos
    compilateur - 1 nayah - 0
    PS : je suis un

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Oui je l'ai déclaré précédemment.

    Effectivement je pourrais peut-être le simplifier mais comme je l'ai dit que suis vraiment très débutant.

    Je pensais que si on arrivais à modifier le lien de l'image qu'on pourrais aussi modifier le lien avec une fonction style document.links.url_image_grand.href ou quelque chose du genre.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.links[i].href="nouveaulien.htm"
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('a')[i].href=...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci pour le code.

    J'ai essayé de l'installer mais le lien ne change pas, je dois faire quelque chose de faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function next(){
      if (document.images){
         if (pictureNumber < totalNumber-1)  pictureNumber++
         else                    
         pictureNumber = 0
         document.images.slides.src  = pictures[pictureNumber]
          document.links[pictureNumber].href=pictures_grand[pictureNumber]//essai 1
          document.getElementsByTagName('url_image_grand')[pictureNumber].href=pictures_grand[pictureNumber] //essai 2		
       }
     
    <script> document.write('<a href="../../image_grand1.jpg" name="url_image_grand"> <img src="../../image_petit1.jpg" name="slides" height="110" border="0"> </a>')</script>
    Pourriez-vous trouver l'erreur?

    Merci.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     document.getElementsByTagName('url_image_grand')
    heu depuis quand ça existe les tags comme ça ???

    rappel un lien = > a

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a id="monlien" href="javascript:alert('un lien')">ici</a>
    <script type='text/javascript'>
    document.getElementsByTagName('a')[0].href="javascript:alert('un autre lien')";
    </script>

    ou encore avec l'id...
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <a id="monlien" href="javascript:alert('un lien')">ici</a>
    <script type='text/javascript'>
    document.getElementById('monlien').href="javascript:alert('un autre lien')";
    </script>
    ou encore par la collection des links

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a id="monlien" href="javascript:alert('un lien')">ici</a>
    <script type='text/javascript'>
    document.links[0].href="javascript:alert('un autre lien')";
    </script>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    A d'accord, maintenant ça marche.

    Le problème c'est que mon url étais récupérée par un script pour afficher une popup mais comme l'url commence par "javascript:alert(' le lien ne marche plus. Je vais essayer de trouver le problème.

    Merci pour m'avoir aidé!

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Pour finir j'ai réussi à faire marcher le script sans mettre dans le lien href="javascript:alert('un lien')", c'est exactement ça que je voulais.

    Encore merci pour votre aide!

Discussions similaires

  1. Comment ne pas changer la couleur d'un lien déjà visité ?
    Par kilian67 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 07/08/2008, 15h34
  2. Réponses: 1
    Dernier message: 13/05/2007, 13h25
  3. Comment changer l'apparence d'un lien sur le clic
    Par tedparker dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 11/03/2007, 01h32
  4. Réponses: 3
    Dernier message: 24/05/2006, 20h24
  5. Comment changer l'aspect du curseur sur un lien ?
    Par Fleep dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/03/2005, 17h30

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