it-swarm.com.de

so können Sie alle onClick-Optionen für Bilder auf einer Seite deaktivieren oder aktivieren

Wenn der Benutzer auf ein Bild klickt, möchte ich, dass die onClicks für alle anderen Bilder deaktiviert sind, bis meine Funktion abgeschlossen ist.

Ich habe derzeit diesen Code, der sie deaktiviert:

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

aber ich bin nicht sicher, wie ich sie wieder aktivieren kann. Ich habe versucht:

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

Aber es funktioniert nicht. Jeder hat eine Lösung für dieses Problem

8
spogebob92

Ihre Lösung funktioniert nicht, da Sie Ihren onClick mit onClick = false entfernt haben. Danach müssen Sie den onClick-Ereignishandler erneut erstellen.

Dies ist wahrscheinlich Ihre Art, Onclick-Ereignisse hinzuzufügen. Ich habe es geändert, damit es funktionieren sollte.

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

Füge deinem Onclick wie oben beschrieben eine Funktion hinzu.

Ihre Onclick-Funktion:

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

So deaktivieren Sie Ihre Onclicks (Ihre Methode)

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

So aktivieren Sie sie erneut (Funktion an onClick anhängen)

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

Dies ist eine Jquery-Lösungsjquery:

Versuchen Sie, unbehindertes Javascript zu verwenden, indem Sie keine Onclick-Ereignishandler im DOM hinzufügen.

<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>

Wenn Ihre Funktion beendet ist, setzen Sie function_is_finished auf true.

7
Timmetje

Eine Lösung besteht darin, den vorherigen Wert von onclick zu speichern und wiederherzustellen:

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 soll auf eine Javascript-Funktion zeigen. statt onclick versuchen Sie es mit.

eles[i].disabled="true"

und am Ende Ihrer Methode zurück zu eles [i] .disabled = "false"

1
cri_sys

Grundsätzlich setzen Sie die Elemente 'onclick' auf false und true. . Es ist das Äquivalent dazu, so etwas zu tun

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

dann

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

Was Sie tun sollten, ist die Beibehaltung einer Variablen, mit der Sie prüfen, ob Sie die Funktion starten können.

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

durch Setzen von eles[i].onclick = false; weisen Sie das onclick-Ereignis erneut false zu. Durch das Zurücksetzen auf "true" wird die ursprüngliche Funktion nicht wiederhergestellt. Es ist wahrscheinlich besser, das Aufheben der Zuweisung in der Ereignisfunktion zu erledigen.

0
malkassem