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
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
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
};
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"
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;
};
}
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.