Struppi: neue probleme :(

Beitrag lesen

ohje, ich hab grad keine grosse Lust alles durchzuschauen, da einiges im argen liegt. Aber was mir auffällt:

ohje, ohje, aber das klingt durchaus verständlich :)

:-)

du definierst überall globale Variabeln, das ist extrem schlecht für dich, da du grosse Schwierigkeiten kriegen wirst (oder schon hast?) dies zu kontrollieren. Arbeite mit Strukturen, Klassen o.ä. und benutze globale Variabeln nur in Ausnahemfällen.

bisher habe ich immer nur einfache kleine functionen geschrieben, bildertauschen oder divs ein-/aublenden...dies hier ist mein erster versuch mich mit javascript auseinanderzusetzen.

definiere ich echt überall globale variablen? dann hab ich den unterschied nicht verstanden...oder mein schalues buch "Javascript" aus dem Franzis Verlag schreib unfung.

Da steht:

"global: Eine Variable ist dann global verfügbar, wenn sie außerhalb einer Funktion oder einer Schleife initialisiert wird, beispielsweise im Kopf bereich der Seite.

lokal: Eine Variable ist dann lokal, wenn sie innerhalb einer Funktion oder einer Schleife initialisiert wird. Sie steht dann ausschließlich dieser Funktion oder Schleife zur Verfügung."

Alle meine Variablen werden nun aber doch in Funktionen initialisiert und sind trotzdem global?

Nicht ganz, initialisieren tust du eine Variabel mit var, d.h.

var global = .....

function func()
{
    var lokal = ....
}

Dein Problem ist, das du z.b. Rasse in der Funktion mit werten füllst und dann als globale Variabel verwendest.

Du hast zwei Möglichkeiten:

entweder du benutzt Globale Variabeln. Diese solltest du Großschreiben, das ist eine Konvention um diese als solche zu erkennen. Und diese musst du dann immer auf Gültigkeit oder Plausibilität überprüfen, da du diese ja an allen möglichen Stellen ändern willst.

oder du verwendest Strukturen bzw. Klassen.

function Mensch()
{
    this.rasse = "Mensch";
    this.eigenschaft = "X"
}

var spieler = new  Mensch();

alert(spieler.rasse)

Für eine komplexere Anwendung ist die Objektorientierte Version mit Sicherheit die bessere, aber diese erfordert wesentlich mehr Einarbeitung von dir.

woher bist du so sicher, das document.chrbogen existiert?

hmm...warum sollte es nicht exisitieren? *kopfkratz*

Alle möglichen Gründe sind denkbar. Das Dokument ist noch nicht fertig geladen, Du hast irgendwo einen Tippfehler gemacht, du hast das Formular umbenannt oder die Syntax stimmt nicht. Es geht vor allem um's Prinzip, lieber einmal zuviel geprüft, als stundenlang irgendwelchen Fehlern hinterher jagen.

diese sehr unsauberen Programmiertechnik zieht sich durch alle Skript, insofern ist es immer schwer Fehler zu finden und deine Skripte zu debuggen (du programmierst nicht zufällig normalerweise mit VB?)

normalerweise programmiere ich mit coldfusion, das sich total von javascript unterscheidet.
Wenn ich den einstieg in VB verstanden hätte, hätte ichs nicht mit javascript probiert ;) *g*.

Ich hatte das vermutet, weil der massive Gebrauch von switch / case Blöcken eine IMHO typische VB  Angewohnheit sind. Ich habe noch nie switch/case gebraucht, i.d.R. läßt sich dies mit Assoziativen Arrays einfacher und eleganter lösen.

ich zur zeit auch nicht, aber ich werd mich mal ransetzen und das ganze überarbeiten.
das ist nicht das letzte mal das ich mich mit diesem projekt hier melden werde *droh* ;).

keine Problem, aber es ist halt schwierig eine so komplexe Arbeit zu untersuchen, die schon an vielen Grundüberlegungen krankt und dann die wirklichen Fehler zu finden und nicht nur irgendwelche Workarounds, die nur die Fehlermeldungen vermeiden sollen, aber oft bei einer durchdachteren Programmierierlogik gar nicht erst auftreten würden.

Aber, trotzdem viel Spaß, bei deinem Programm. Einige Tipps gibt es auch auf der Netscape devedge http://devedge.netscape.com/central/javascript/ wenn du dem Englisch genug mächtig bist.
Kennst du eigentlich Utopia? http://games.swirve.com/utopia/

Struppi.