Variablen global verwenden

Hallo zusammen,
in einem HTML-Formular habe ich 2 externe JavaScript-Dateien eingebunden.
In einer Datei ist eine Funktion zur Übernahme der Daten aus Input-Feldern.

Die Datei sieht wie folgt aus:

var data = new Array

function get()
{
data[0] = document.formular.feld1.value;
.

}

Wenn ich nun in einer anderen Funktion (gleiche Datei) die variable abfragen möchte bekomme ich halt ein leeres Ergebnis. Ich möchte aber nach Möglichkeit die Variablen nicht weiteergeben sonder einmal „speichern“ und in jeder beliebigen Funktion abrufen.

Geht sowas???

Danke und Gruß

Marcel

das beispiel sollte 3 alerts bringen, der 1. a,b der 2. 1,2 der dritte a,b

var a = new Array('a','b')

function foo()
 { 
 alert(a);
 }

function bar()
 {
 var a = new Array(1,2)
 alert(a)
 }

function baz()
 {
 alert(a)
 }

foo();bar();baz();

*Patsch* DANKE
Hallo dog.je,
danke, das beispiel von dir hab ich getestet und es funzt (war zu erwarten *g*)

Danach habe ich mein Script nochmals durchwühlt, da es bei diesem nicht funktioniert hat.

Bin zu dem entschluss gekommen die Abfrage
if ( data[i] = „“ ) ind if ( data[i] == „“)
zu ändern
*g*

Also besten Dank nochmal und Gruß

Marcel

Gültigkeiten von Variablen
Ich fass es nochmal zusammen, vielleicht findets den Weg ins FAQ.
(Wäre nett wenn dann jemand vorher die Rechtschreibung prüft)

  1. Gültigkeit von Variablen außerhalb von Funktionen

Variablen die außerhalb von Funktionen sind immer global, wobei global eigentlich bedeutet das sie dem Objekt window angehören. Auf eine Variable ‚a‘ die außerhalb einer Funktion definiert worden ist kann ich also auch per window.a zugreifen.

var a=1;
alert(a)
alert(winbdow.a)

Ergibt jeweils 1.

Da Javascript alle Bezeichner auf window.Bezeichner erweitert (ich kann auf document.title zugreifen obwohl es korrekt(er) window.document.title heißen müsste). Wenn ich a schreibe versteht Javascript windows.a.
Außerhalb von Funktionen ist es unerheblich ob ich eine Variable definiere und ihr dann einen Wert zuweise:

var a;
a=1;

oder in der Kurzschreibweise:

var a=1;

oder ob ich sie mit der ersten Zuweisung definiere:

a=1;

Innerhalb von Funktionen wird es allerdings anders, hier schafft die vorherige Definition eine lokale Variable. Und die einfach Zuweisungsdefinition eine globale Variable, weil sie auf windows.Bezeichner erweitert wird. Dies ist eine Besonderheit von Javascript, Fehlerquelle aber auch sehr, sehr praktisch.
Ein Beispiel:

a=20 
b=30
function zupp()
{
 var a=10;
 b=10;
 alert(a);
 alert(b);
}
 
alert(a);
alert(b);
zupp();
alert(a);
alert(b);

Dieses Beispiel wird

20,30,10,10,20,10

ausgeben.

Nochwas zum window Objekt. Jede Seite in einem Frameset hat ein eigenes window Objekt. Ich kann auf die Variablen einer anderen Seite per frames Kollektion zugreifen:

in index.html definiert:

a=1

in frame.html

alert(parent.a)

ergibt 1

Vorsicht beim umgekehrten Weg, hier sollte erst das onload Ereigniss des Framesets/Frames abgewartet werden (im vorherigen Beispiel muss die Variablendefinition (bzw. die Scriptanweisungen) vor der Framesetdefinition stehen, sonst gibt es auch dort Probleme).

in index.html definiert:

function frame\_onload()
{
 alert (frames.frame1.a)
}

in frame.html

a=1;

ergibt 1.

Grüße
Stefan

Hm, mit

if ( data[i] = „“ ) ind if ( data[i] == „“)

killst du data[i], du weist dem Arrayelement den Wert „“ (leere Zeichenkette) zu, der gesammte Ausdruck data[i] = „“ hat den Wert „“ , dieser wird in einer if Anweisung immer als ‚false‘ gesehen. Alles was hinter der if Anweisung folgt kann niemals ausgeführt werden. Ich glaub da dürfe was in deinem Script nicht funktionieren…
Schick mal ein kleine Stück das du per Copy und Paste herausgefischt hast, dann kann dir vielleicht wirklich geholfen werden…

Grüße
Stefan

Hallo Stefan,
danke,
aber Hilfe ist hier nicht mehr nötig, die Änderung der If-Abfrage hat ausgereicht.

Gruß

Marcel