Der Martin: if verzweigung problem

Beitrag lesen

Hallo,

Hab ein Problem mit den ganzen if fragen.

du hast vor allem ein Problem mit der Syntax der if-Anweisung. Und ein paar Verständnisprobleme mit HTML nebenbei.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

Warum machst du mit XML-Namespaces rum, obwohl du direkt drüber behauptest, HTML zu schreiben und nicht XHTML?

if(document.berechnung.Knopf[0].checked);

"Wenn document.berechnung.Knopf[0] gecheckt ist, dann ... ach, nichts."
Da wird ein Ausdruck ausgewertet, und wenn der wahr ist, wird nichts gemacht. Die Anweisung hast du ja mit dem Semikolon schon abgeschlossen. Das ist syntaktisch nicht sinnvoll, aber erlaubt. Deswegen wird JS auch keinen Fehler melden.

{
var dm, euro;
dm = document.berechnung.Eingabefeld.value;
euro = dm/1.95583;
document.berechnung.Ausgabefeld.value = euro;
}

Und danach folgt ein Anweisungsblock, der wieder von der if-Anweisung unabhängig ausgeführt wird. Dass er als Block in geschweiften Klammern notiert ist, ist syntaktisch auch wieder zulässig, daher wirst du auch hier keine Fehlermeldung kriegen.

else

Spätestens hier aber schon. Die if-Anweisung, zu der das else eigentlich gehören sollte, ist ja mit dem Semikolon schon längst abgeschlossen und beendet. Das else steht also ohne Zusammenhang frei im Raum.

if(document.berechnung.Knopf[1].checked);

Dito.

if(document.berechnung.Knopf[2].checked);

Dito. Und noch ein paarmal.

function init()
{
document.berechnung.reset()
document.berechnung.Eingabefeld.focus()
}

Wenn du schon oben nach dem if-Statement ein Semikolon setzt, wo es von der Aussage her falsch ist, warum setzt du dann hier keine, wo's sinnvoll wäre?
Zwingend nötig ist es nicht - wenn die Anweisung bis zum Zeilenende formal sinnvoll interpretierbar ist, kann man das Semikolon in Javascript auch weglassen. Aber warum? Andere Sprachen mit ähnlicher Syntax (PHP, C) fordern es auch zwingend.

<body onload=init()>

Attributwerte müssen in HTML in Anführungszeichen stehen, wenn sie nicht ausschließlich aus Buchstaben und Ziffern bestehen. Im XHTML sogar immer.

Ciao,
 Martin

--
Wer im Glashaus sitzt, sollte Spaß am Fensterputzen haben.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(