Wie kann ich mit jQuery eine globale Variable erstellen?

Lesezeit: 2 Minuten

olos Benutzeravatar
olo

So übergeben Sie eine Funktion a_href = $(this).attr('href'); Wert zu global a_hrefmachen a_href="https://stackoverflow.com/questions/18995647/home"

var a_href; 

    $('sth a').on('click', function(e){
        a_href = $(this).attr('href');

          console.log(a_href);  
         //output is "https://stackoverflow.com/questions/18995647/home"

        e.preventDefault();
    }

console.log(a_href);  
//Output is undefined 

  • Das einzige Problem ist, wenn die var a_href befindet sich in einem dom-ready-Handler … die Variablendeklaration muss im globalen Bereich liegen oder verwendet werden window.a_href = $(this).attr('href')

    – Arun P Johny

    25. September 2013 um 3:23


Arun P Johnys Benutzeravatar
Arun P Johny

Ihr Code sieht gut aus, mit Ausnahme der Möglichkeit, dass die Variablendeklaration, wenn sie sich in einem Dom-Lesehandler befindet, keine globale Variable ist, sondern eine Abschlussvariable

jQuery(function(){
    //here it is a closure variable
    var a_href;
    $('sth a').on('click', function(e){
        a_href = $(this).attr('href');

          console.log(a_href);  
         //output is "https://stackoverflow.com/questions/18995647/home"

        e.preventDefault();
    }
})

Um die Variable global zu machen, besteht eine Lösung darin, die Variable im globalen Gültigkeitsbereich zu deklarieren

var a_href;
jQuery(function(){
    $('sth a').on('click', function(e){
        a_href = $(this).attr('href');

          console.log(a_href);  
         //output is "https://stackoverflow.com/questions/18995647/home"

        e.preventDefault();
    }
})

Eine andere Möglichkeit besteht darin, die Variable als Eigenschaft des Fensterobjekts festzulegen

window.a_href = $(this).attr('href')

Warum Konsolendruck undefiniert ist

Sie erhalten die Ausgabe als undefined Denn obwohl die Variable deklariert ist, Sie sie nicht mit einem Wert initialisiert haben, wird der Wert der Variablen erst nach dem festgelegt a Das Element wird angeklickt, bis die Variable den Wert hat undefined. Wenn Sie die Variable nicht deklarieren, wird ein Fehler ausgegeben Referenzfehler

  • Vielen Dank, werde es ankreuzen 🙂

    – olo

    25. September 2013 um 3:33

Legen Sie die Variable im Fenster fest:

window.a_href = a_href;

RobGs Benutzeravatar
RobG

Sie können die Deklaration globaler Variablen vermeiden, indem Sie sie direkt zum globalen Objekt hinzufügen:

(function(global) {

  ...

  global.varName = someValue;

  ...

}(this));

Ein Nachteil dieser Methode besteht darin global.varName wird erst existieren, wenn diese bestimmte Codezeile ausgeführt wird, aber das kann leicht umgangen werden.

Sie könnten auch eine Anwendungsarchitektur in Betracht ziehen, in der solche Globals in einem Abschluss gespeichert werden, der allen Funktionen gemeinsam ist, die sie benötigen, oder als Eigenschaften eines entsprechend zugänglichen Datenspeicherobjekts.

1453540cookie-checkWie kann ich mit jQuery eine globale Variable erstellen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy