zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Problem mit globaler Variable

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 12.03.2009, 02:20
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Frage Problem mit globaler Variable

Hallo Leute,

ich habe ein Problem mit der Gültigkeit einer globalen Variable in Javascript und deren Änderung in einer Funktion.

Ich definiere beim Start der Seite die Variable mit var name = '';
Wenn ich nun auf einen Link klicke, wird eine Funktion aufgerufen und einige Dinge erledigt, u.a. eben die Änderung der globalen Variable mit var name = neuer Wert. Aber leider ist die globale Variable damit nicht geändert, sonder die Änderung ist nur der Funktion bekannt.

Laut der überall zu findenen Gültigkeitsregeln von Variablen sollte die Änderung so funktionieren, und die Variable dann auf der ganzen Seite funktionieren und nicht nur in der Funktion.

Zur Anwendung dieser Variabel sei noch gesagt:
Ich habe mehrere Div-Container die dynamisch geändert werden. Und der eine Div-Container mit dem Inhalt der globalen Variable soll aber immer den aktuellen Wert der globalen variabel anzeigen und steht auch über allen anderen boxen. nur wenn ich den inhalt einer box ändere, und auch den inhalt der div-box in der die globale variabel ausgegeben wird neu schreibe, dann bekomme ich wieder undefiniert als antwort.

Warum dies nicht geht, oder was ich falsch mache das verstehe ich eben nun nicht. Evtl. kann mir das ja jemand erklären, warum das nicht geht oder wie ich das anders machen muss.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 12.03.2009, 02:37
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.737
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Durch das var wird eine lokale Variable deklariert. Lass es einfach weg und JavaScript wird die nächste Variable in einem übergeordneten Geltungsbereich verwenden.
__________________
Markus Wulftange
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 12.03.2009, 03:16
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

Hallo, danke aber das habe ich alles schon durch. JS setzt die Variable immer wieder auf den alten Wert zurück, egal ob ich diese nun mit var oder ohne einen neuen Wert zuweise. Das ist ja das komische, was ich auch nicht verstehe. Denn wie schon geschrieben, kann man ja überall nachlesen das dies gehen muss und wie die Gültigkeit der Variablen ist, aber das funktioniert eben so nicht.
Mit Zitat antworten
  #4 (permalink)  
Alt 12.03.2009, 11:42
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.737
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Dann zeig doch mal dein Skript.
__________________
Markus Wulftange
Mit Zitat antworten
  #5 (permalink)  
Alt 12.03.2009, 12:46
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

die funktionen und deklarationen sind alle in einer js-datei die mit der seite geladen wird.

Erläuterung:
1. Zeile : Deklaration der globalen Variabel
1.Funktion : schreibt den Inhalt der Variable in einen Div-Container
2.Funktion : wird bei Klick auf einen Button aufgerufen und bekomme die erforderlichen Daten mit, u.a. eben auch die für die globale Variabel.

Soweit funktioniert dies auch. Wenn ich aber nun den Inhalt der Div-Box ausserhalb der Funktion neu schreibe, dann hat die Variable wieder den Wert der Deklaration von oben und nicht den geänderten Wert aus der Funktion.

Code:
var karteninfo = "Deutschland";

/* Objektinhalt ändern */
function writeContent(obj,content) {
	if(browsertyp.NS6) {
		document.getElementById(obj).innerHTML = content;
	} else {
		if(browsertyp.IE) {
			document.all(obj).innerHTML = content;
		}
	}
}
function clickKarte_land(headline,karteninfo,region) {
	headlineText(headline);
	karteninfo = karteninfo;
	writeContent('info',karteninfo);
	showObj('listenbox');
}
Mit Zitat antworten
  #6 (permalink)  
Alt 12.03.2009, 13:25
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.737
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Code:
this.karteninfo = karteninfo;
__________________
Markus Wulftange
Mit Zitat antworten
  #7 (permalink)  
Alt 12.03.2009, 13:32
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

kein Veränderung, immer noch wird die Variable auf den alten Wert zurückgesetzt, sobald ich den Inhalt der div-box ausserhalb der funktion neu schreibe. die varibale wird einfach nicht global geändert sondern immer nur lokal
Mit Zitat antworten
  #8 (permalink)  
Alt 12.03.2009, 13:43
Benutzerbild von Gumbo
XHTMLforum-Kenner
 
Registriert seit: 22.08.2004
Ort: Trier
Beiträge: 2.737
Gumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekanntGumbo ist jedem bekannt
Standard

Prinzipiell funktioniert es jedoch so, wenn eine lokale Variable denselben Bezeichner hat.
Code:
var foo = "a";
function func(foo) {
	this.foo = foo;
}
func("b");
document.write(foo);    // "b"
__________________
Markus Wulftange
Mit Zitat antworten
  #9 (permalink)  
Alt 12.03.2009, 13:48
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

tja, das habe ich ja auch gedacht und so sollte es auch funktionieren, das tut es aber leider nicht. naja, dann muss ich das wohl anders machen...danke trotzdem
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 13.03.2009, 11:36
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.885
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Du verwendest hier drei verschiedene Typen von Variabeln mit dem gleich Namen das kann natürlich nicht gut gehen. Globale Variabeln sollte man zwar sowieso immer vermieden, wenn du sie schon benutzt dann solltest du möglichst eindeutige und unverwechselbare Bezeichnungen vergeben.
HTML-Code:
var v = 1;
function test(v) {
	v = v;
	alert('v in funktion=' + v); // => 2
}
alert('v vorher=' + v); // => 1
test(2);
alert('v nacher=' + v); // => 1
in dem Fall ist die Ursache, dass du den Parameter genauso nennst:
HTML-Code:
var v = 1;
function test(v2) {
	v = v2;
	alert('v in funktion=' + v)
}
alert('v vorher=' + v)
test(2);
alert('v nacher=' + v)
aber wie gesagt, globale Variabeln sind so gut wie immer eine schlechte Sache.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit variabler Variable philosapiens Serveradministration und serverseitige Scripte 10 27.04.2011 20:31
Mitwachsender Content und Footer Problem Bentham CSS 5 19.09.2010 12:49
IE 7: Zoom Problem, Höhen Problem, Text problem Cu Chullain CSS 4 02.09.2010 14:56
Problem mit Background-Color im FireFox to.ni CSS 2 31.08.2004 12:13


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:43 Uhr.