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.
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();
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)
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)
}
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…