314 votes

Changement programmé du src d'une balise img

Comment puis-je changer le src de l'attribut img en utilisant le javascript ?

<img src="../template/edit.png" name=edit-save/>

Au départ, j'ai un src par défaut qui est "../template/edit.png" et je voulais le changer avec "../template/save.png" onclick.

MISE À JOUR : voici mon html onclick :

<a href='#' onclick='edit()'><img src="../template/edit.png" id="edit-save"/></a>

et mon JS

function edit()
{   
    var inputs = document.myform;
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }
}

J'ai essayé d'insérer ceci à l'intérieur de la fonction edit(), cela fonctionne mais il faut cliquer deux fois sur l'image.

var edit_save = document.getElementById("edit-save");
    edit_save.onclick = function(){
       this.src = "../template/save.png";
    }

396voto

Matthias Points 2033

Donnez un identifiant à votre balise img, puis vous pouvez

document.getElementById("imageid").src="../template/save.png";

20 votes

Pour des choses simples comme le réglage de la valeur d'une entrée ou la modification du src d'une image ( spécial lorsque vous utilisez des éléments qui ont des ID), vous devriez vraiment essayer d'éviter jQuery, car l'appel est beaucoup plus lent que l'appel en JS pur.

2 votes

@william44isme et notre page sera chargée plus lentement qu'avant. je pense que le jQuery est utile seulement pour les sites web qui utilisent un même code, très plus. par exemple si nous utilisons le code ci-dessus plus de 30 ou 50 fois. donc il est nécessaire d'utiliser jQuery

40voto

Alex MGD Points 412

Si vous utilisez la bibliothèque JQuery, utilisez cette instruction :

$("#imageID").attr('src', 'srcImage.jpg');

31 votes

La question ne demande pas de réponse jQuery, n'inclut pas de balise jQuery et ne suggère pas que l'on peut utiliser jQuery.

12 votes

Dire aux gens d'utiliser jQuery alors qu'une fonction équivalente est intégrée à Javascript n'a aucun sens. Chaque question JS ne nécessite pas une réponse jQuery. Cette solution est un gadget qui empêche les gens d'apprendre ce que le JS classique peut déjà faire.

32voto

Ivory Santos Points 816

C'est bon maintenant

function edit()
{   
    var inputs = document.myform;
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }

    var edit_save = document.getElementById("edit-save");

       edit_save.src = "../template/save.png";                              
}

9voto

<img src="../template/edit.png" name="edit-save" onclick="this.src = '../template/save.png'" />

1 votes

Le JS en ligne n'est pas vraiment une bonne idée.

8voto

Fabrizio Calderan Points 43398

Avec l'extrait que vous avez fourni (et sans faire d'hypothèses sur les parents de l'élément), vous pourriez obtenir une référence à l'image avec

document.querySelector('img[name="edit-save"]');

et changez le src avec

document.querySelector('img[name="edit-save"]').src = "..."

afin que vous puissiez obtenir l'effet désiré avec

var img = document.querySelector('img[name="edit-save"]');
img.onclick = function() {
    this.src = "..." // this is the reference to the image itself
};

sinon, comme d'autres l'ont suggéré, si vous contrôlez le code, il est préférable d'assigner un id à l'image pour obtenir une référence avec getElementById (puisque c'est la méthode la plus rapide pour récupérer un élément)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X