web-dev-qa-db-fra.com

comment désactiver ou activer tous les onClick pour les images sur une page

Lorsque l'utilisateur clique sur une image, je veux que les onClicks de toutes les autres images soient désactivés jusqu'à la fin de ma fonction.

J'ai actuellement ce code qui les désactive:

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = false;

mais je ne sais pas comment les réactiver. J'ai essayé:

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = true;

Mais ça ne marche pas. tout le monde a la solution à ce problème

8
spogebob92

Votre solution ne fonctionne pas car vous avez supprimé votre onClick avec onClick = false. Après cela, vous devez créer à nouveau le gestionnaire d’événements onClick.

C’est probablement votre façon d’ajouter des événements onclick, je l’ai modifiée pour que cela fonctionne.

<img src="image1.jpg" onclick="when_i_click();"/>
<img src="image2.jpg" onclick="when_i_click();"/>

Essayez d’ajouter une fonction à votre onclick comme ci-dessus.

Votre fonction onclick:

var when_i_click = function(){
    alert('image clicked!');
}

Voici comment vous désactivez votre onclicks (votre méthode)

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = null;

Voici comment vous les réactivez (fonction de réattachement à onClick)

var eles = document.getElementsByTagName('img');
for (var i=0; i < eles.length; i++)
   eles[i].onclick = when_i_click;

Ceci est une solution Jquery jquery:

Essayez d’utiliser un code javascript discret en n’ajoutant pas de gestionnaires d’événements onclick dans le DOM.

<script>
(function(){
    var function_is_finished = false;
    $('img').on('click',function(event){
        if(function_is_finished) {
            //Do your stuff when someone clicks on Img
        }
    });
})();
</script>

Lorsque votre fonction est terminée, définissez simplement function_is_finished sur true

7
Timmetje

Une solution consiste à enregistrer la valeur précédente de onclick et à la restaurer:

var disable_all = function () {
    var eles = document.getElementsByTagName('div');
    for (var i=0; i < eles.length; i++) {
      eles[i].prev_click = eles[i].onclick; // save the previous value
      eles[i].onclick = false;
    }
}

var enable_all = function() {
    var eles = document.getElementsByTagName('div');
    for (var i=0; i < eles.length; i++)
       eles[i].onclick = eles[i].prev_click;  // restore the previous value
    };
1
Iftah

onclick est supposé pointer sur une fonction javascript. au lieu de onclick try with.

eles[i].disabled="true"

et à la fin de votre méthode, retournez à eles [i] .disabled = "false"

1
cri_sys

En gros, vous définissez les éléments onclick à false et true. Équivaut à faire quelque chose comme:

<img src=".." onclick="false"/>

puis

<img src=".." onclick="true"/>

Ce que vous devriez faire est de maintenir une variable avec laquelle vous vérifiez si vous pouvez démarrer la fonction ou non.

locked = false;
function yourFunction() {
    if (locked) {
        locked = true;
        //... Do what you have to do here
        locked = false;
    };
}
0
sitifensys

en définissant eles[i].onclick = false;, vous réaffectez l'événement onclick à false. rétablir la valeur true ne l'assigne pas à la fonction d'origine. Il est probablement préférable de gérer la non-affectation dans la fonction événement à la place.

0
malkassem