2 Stimmen

Sicherstellen, dass eine JavaScript-Funktion nicht aufgerufen wird, wenn sie bereits aufgerufen wurde

Ich verwende Google Maps für ein Projekt. Ich muss in der Lage sein, mehrere Karten auszublenden und anzuzeigen. Ich kann allein keine grundlegende toggleDiv-Funktion verwenden. Dies liegt daran, dass Google Maps die beabsichtigte Größe des div ignoriert, wenn das div in CSS auf display: none eingestellt ist. (aus welchem Grund auch immer ist es in Ordnung, durch JavaScript umgeschaltet zu werden.) Ich könnte GSize(width, height) verwenden, aber es kann keine Prozentsätze verarbeiten. Da ich die Karte zu 100%, 100% benötige, ist dies keine Option. Ich habe einen Weg darum herum gefunden, indem ich die Funktion der zweiten Karte mit onClick aufrufe, anstatt alle Funktionen bei body onLoad zu laden. Aber dann wird der Zoom der Karte nicht gespeichert und die Karte wird einfach neu geladen.

Also muss ich überprüfen, ob eine Funktion aufgerufen wurde, und falls ja, sie nicht erneut aufrufen. Ich kann nicht herausfinden, wie das geht. Jede Hilfe ist willkommen.

Danke.

7voto

katspaugh Punkte 16624

Ein weiteres "faules" Variant:

var doOnce = function () {
    // do something

    doOnce = function () {}
}

Was das ursprüngliche Problem betrifft, wenn die Funktion, die Sie einmal ausführen möchten, der Klick-Ereignisbehandler ist, sollten Sie den Klick-Ereignislistener entfernen.

2voto

brenjt Punkte 15551

Definiere eine Variable wie folgt. var beenFired = false;

In der Funktion mache das:

function myFunction()
{
    if(!beenFired)
    {
        //TODO FUNKTION
        beenFired = true;
    } 
}

Dadurch wird überprüft, ob es noch nicht aktiviert wurde, und wenn nicht, wird es aktiviert. Du könntest das sogar um den Funktionsaufruf selbst machen.

if(!beenFired)
    myFunction()

function myFunction()
{
    //TODO FUNKTION
    beenFired = true;
}

1voto

Sergey Metlov Punkte 24686

Wenn ich richtig verstehe:

var isCalled = false;

function f() {
  if (!isCalled) {
    isCalled = true;
    // ...
  }
}

1voto

tereško Punkte 57124
var func = (function(){
    var first = true;
    return function( a, b, c){
        if ( !first ){
            return;
        }
        first = false;

        console.log( arguments );
    }
})();

func( 1, 2, 3); // in Konsole : [ 1, 2, 3]
func( 1, 1, 1); // es passiert nichts;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X