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 :

Remplacer une image par une autre image (et vice-versa)


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2019
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Remplacer une image par une autre image (et vice-versa)
    Bonjour, je développe un petit site et je coince actuellement à un endroit où j'ai besoin du JavaScript. Je n'y connaît rien en JavaScript et bloque ici :

    J'ai placé un lien image et j'aimerai que lorsqu'on clique dessus, cette image soit remplacée par une autre image; et que lorsqu'on reclique dessus, la première image revienne.

    Exemple plus compréhensible : image1 -> clique -> image2 -> clique -> image1 et qu'on puisse faire ça autant de fois qu'on veut !

    J'ai suivis le conseil de l'un des nombreux topics que j'ai consulté, et ça marcher pas :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="#"><img src="icone_menu.png" onClick="AfficherMasquer(); changeimg(this)"/></a>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function changeimg(monimage) 
    {
    	monimage.src = (monimage.src=="icone_menu.png" ) ? "icone_menu_change.png" : "icone_menu.png";
    }
    Merci d'avance pour l'aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La fonction AfficherMasquer() existe ? Elle fonctionne sans erreur ? Parce que si elle n'existe pas ou fait une erreur, ça arrêtera l'exécution du onClick sans appeler la fonction changeimg().

    Le reste doit fonctionner. Essaye déjà comme ça :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <a href="#"><img src="icone_menu.png" onClick="changeimg(this);"/></a>
     
    <script type="text/javascript">
    function changeimg(monimage) {
            monimage.src = monimage.src=="icone_menu.png" ? "icone_menu_change.png" : "icone_menu.png";
    }
    </script>

    PS je passe le relai au forum JavaScript. Java et JavaScript sont deux langages différents sans aucun rapport (à quelques détails de syntaxe commune près).

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Salut,

    1) L'action sur un lien n'est pas anodine; si tu veux stopper le changement d'adresse, return false ou preventDefault() est nécessaire;

    2) En fait, ton lien est inutile puisque tu ne vas nulle part avec ton "click";
    Par exemple, affecte un style "cursor:pointer" à ton image pour créer un effet de lien.

    3) Pense que l'adresse de l'image est absolue, même si tu la déclares comme relative;
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div>
    <img style="cursor:pointer" alt="image" src="icone_menu.png" id="im" />
    </div>

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    document.images['im'].addEventListener("click",function(){
    	this.src= this.src.search("change")!=-1 ? "icone_menu.png" : "icone_menu_change.png";
    },false)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2019
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    @joel.drigo

    Je confirme que la fonction AfficherMasquer marche correctement et que le problème est lié à la fonction changeimg, même seule.

    PS je passe le relai au forum JavaScript. Java et JavaScript sont deux langages différents sans aucun rapport (à quelques détails de syntaxe commune près).

  5. #5
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2019
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Là n'est pas le problème, je veux simplement réussir à changer d'image au clique. Et j'ai testé avec votre ver
    @javatwister

    Là n'est pas le problème, je veux simplement réussir à changer d'image au clique. Et j'ai testé avec votre version et ça ne fonctionne pas

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Supprime le lien <a>, qui ne sert effectivement à rien.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Lucas Gauthier Voir le message
    @joel.drigo

    Je confirme que la fonction AfficherMasquer marche correctement et que le problème est lié à la fonction changeimg, même seule.
    Ah, oui le problème vient, comme l'a dit @JavaTwister, des chemins qui sont relatifs et non absolus.

    Essaye comme ça :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function changeImg(imageElement) { 
        		imageElement.src = imageElement.getAttribute('src')=="icone_menu.png"?"icone_menu_change.png" : "icone_menu.png";
        	}

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Quand on clique sur tel lien <a>, la page est ré-affichée (rechargée).
    Vraiment ? Avec un href comme celui-là, juste vers une ancre ? Pourtant si je fais :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html >
    <body onload="console.log('load');">
    	<a href="#"><img src="suricate.jpg" onClick="changeImg(this);"/></a>
        <script type="text/javascript">
            const image1="suricate.jpg";
            const image2="rouge.jpg";
            function changeImg(imageElement) { 
                    imageElement.src = imageElement.getAttribute('src')==image1?image2:image1;
            }
        </script>
    </body>
    </html>
    Je ne vois "load" s'afficher qu'une fois (et mon image change bien à chaque clic).

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Il me semblait avoir été clair dans ma première réponse sur les 3 problèmes de ton code. Comme quoi...

  10. #10
    Invité
    Invité(e)
    Par défaut
    @joel.drigo
    Tu as raison.
    J'ai édité mon message entre-temps... (et supprimé ma fausse affirmation)

    Cela dit, ce lien est toujours inutile ici !

  11. #11
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Vraiment ? Avec un href comme celui-là, juste vers une ancre ?
    Ah oui, de fait! Ce n'est pas le lien qui est cliqué mais l'image. D'où la conclusion initiale...

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par javatwister Voir le message
    Ah oui, de fait! Ce n'est pas le lien qui est cliqué mais l'image. D'où la conclusion initiale...
    Oui enfin comme ça aussi :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <!DOCTYPE html>
    <html >
    <body onload="console.log('load');">
    	<a href="#" onclick="console.log('click');">toto</a> 
    </body>
    </html>
    J'ai une fois "load" et n fois "click".

    Donc ce n'est pas le souci d'avoir ce "a". Qu'il serve ou pas est un autre problème...

  13. #13
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    J'avais oublié que j'utilisais ce truc dans les années 80
    Mais attention: une page est ajoutée à l'historique et tu te retrouves inutilement avec une adresse en "#";

  14. #14
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Septembre 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 19
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Septembre 2019
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup de vos réponses, j'en avais mal compris et le remplacement d'image marche parfaitement, et j'ai supprimé le lien inutile, merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation d'une image qui vient de remplacer une autre
    Par gaelfrancky dans le forum jQuery
    Réponses: 5
    Dernier message: 20/01/2020, 14h55
  2. Remplacer un caractère par un autre dans une String
    Par djack44 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 12/03/2008, 15h16
  3. Réponses: 2
    Dernier message: 22/10/2007, 17h50
  4. Réponses: 3
    Dernier message: 21/07/2007, 01h48
  5. Parser une page pour remplaçer des mots par d'autres
    Par HALOMOTO dans le forum Langage
    Réponses: 13
    Dernier message: 13/07/2006, 22h58

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