JavaScript - Programm funktioniert nicht

el_burro_rojo

Vice Admiral Special
Mitglied seit
18.08.2009
Beiträge
658
Renomée
8
Standort
Hanau
Moin Leute, ich habe ein Problem und zwar habe ich in Javascript ein Quiz geschrieben, welches allerdings die Auswertung nicht anzeigt, habe mir schon seit über 'ner Stunde nen Wolf gesucht, aber nix gefunden. Firefox zeigt "Objekt erwartet" in Zeile 97, allerdings ist da alles vorschriftsmäßig?

Danke im Vorraus

Code:
<html>
 <head>
  <title>Das Computerquiz</title>


<script language=JavaScript>

var punkte, schreiben;

function auswerten()
{
  punkte=0;

  if (quiz.system[1].checked==true)
    punkte=punkte+5;

  if (quiz.grundlage[3].checked==true)
     punkte=punkte+5;
  
   if (quiz.tastatur[0].checked==true)
     punkte=punkte+5;  

   if (quiz.bildschirm.[3].checked==true)
    punkte=punkte+5; 

  if (quiz.graka[2].checked==true)
    punkte=punkte+5;

  if (quiz.platte[3].checked==true)
    punkte=punkte+5

  alert(punkte);
}
</script>
</head>
 <body>
 <h1 align=center>Das Computerquiz</h1>
 <h2>F&uuml;r jede richtige Antwort gibt es 5 Punkte!</h2>

<form name="quiz" method=post> 

<p>Welches Windows gibt es nicht?</p>
<br>
<input type="radio" name="system" value="a"> Windows ME<br>
<input type="radio" name="system" value="b"> Windows 2000 Home Edition<br>
<input type="radio" name="system" value="c"> Windows 7 Starter<br>
<input type="radio" name="system" value="d"> Windows Vista Ultimate<br>


<p>Wie nennt man die Grundlage eines PCs?</p>
<br>
<input type="radio" name="grundlage" value="a"> Prozessor<br>
<input type="radio" name="grundlage" value="b"> Bildschrim<br>
<input type="radio" name="grundlage" value="c"> Festplatte<br>
<input type="radio" name="grundlage" value="d"> Mainboard<br>
<br>

<p>Wieviele Tasten hat eine Standarttastatur?</p>
<br>
<input type="radio" name="tastatur" value="a"> 105<br>
<input type="radio" name="tastatur" value="b"> 52<br>
<input type="radio" name="tastatur" value="c"> 300<br>
<input type="radio" name="tastatur" value="d"> 80<br>
<br>

<p>Was ist keine Bildschirmtechnologie?</p>
<br>
<input type="radio" name="bildschirm" value="a"> CRT<br>
<input type="radio" name="bildschirm" value="b"> TFT<br>
<input type="radio" name="bildschirm" value="c"> Plasma<br>
<input type="radio" name="bildschirm" value="d"> Laser<br>
<br>

<p>Welches ist das aktuelle Grafikkarten-Topmodell von NVidia (18.05.2010)?<p>
<br>
<input type="radio" name="graka" value="a"> GeForce 9600 GT<br>
<input type="radio" name="graka" value="b"> GeForce 4 Ti<br>
<input type="radio" name="graka" value="c"> GeForce GTX 480<br>
<input type="radio" name="graka" value="d"> Radeon HD 5970<br>
<br>


<p>Wie groß sind die derzeit am Markt befindlichen größten Festplatten?<p>
<br>
<input type="radio" name="platte" value="a"> 160 GB<br>
<input type="radio" name="platte" value="b"> 200 TB<br>
<input type="radio" name="platte" value="c"> 4 MB<br>
<input type="radio" name="platte" value="d"> 2,5 TB<br>
</br>
</form>
<br>
<br>
<br>
<input type="button" value="Auswerten" onClick="auswerten()">
<input type="reset" value="Löschen">
</body>
</html>
 
Ich kenn mich mit JScript jetzt nicht so aus, aber warum schließst du keinen deiner <input> Tags?

EDIT:

Hab nachgeschaut, passt schon so :P
 
AFAIK muss man das bei Input nicht (wurde uns in Info so erklärt)
 
Einige der <p> Tags sind nicht geschlossen. Ob's daran liegt: *noahnung*. Und den Tag </br> gibt's nicht. Noch ein Fehler: in Zeile 23 ist ein Punkt vor der eckigen Klammer zuviel. Frage: benutzt du einen Editor mit Syntax-Highlighting? Wenn nein, dann solltest du das ändern und du hättest einige der Fehler sofort gesehen.

Noch ein Hinweis: Einen direkten Vergleich auf true macht man nicht. Man schreibt normalerweise immer (Pseudocode)
Code:
if (variable) then
   do_sth
fi

MfG Dalai
 
Zuletzt bearbeitet:
OK, die <p>s und <br>s sind soweit behoben, der Punkt auch. Trotzdem gehts noch nicht :( Laut Firefox und IE macht diese Zeile hier
Code:
<input type="button" value="Auswerten" onClick="auswerten()">
Probleme. Aber was ist da falsch ???
.
EDIT :
.

NEEEEEEEEEEEEEEIN ODER??? VERDAMMTE HACKE!!! Es lag schlicht und einfach daran, dass ich JavaScript geschrieben hatte :( MIt Javascript läuft alles bestens...*wallbash*
 
Bei mir geht das problemlos mit "JavaScript":
Code:
<html>
 <head>
  <title>Das Computerquiz</title>


<script language=JavaScript>

var punkte, schreiben;

function auswerten()
{
  punkte=0;

  if (quiz.system[1].checked)
    punkte=punkte+5;

  if (quiz.grundlage[3].checked)
     punkte=punkte+5;
  
   if (quiz.tastatur[0].checked)
     punkte=punkte+5;  

   if (quiz.bildschirm[3].checked)
    punkte=punkte+5; 

  if (quiz.graka[2].checked)
    punkte=punkte+5;

  if (quiz.platte[3].checked)
    punkte=punkte+5

  alert(punkte);
}
</script>
</head>
 <body>
 <h1 align=center>Das Computerquiz</h1>
 <h2>F&uuml;r jede richtige Antwort gibt es 5 Punkte!</h2>

<form name="quiz" method=post> 

<p>Welches Windows gibt es nicht?</p>
<br>
<input type="radio" name="system" value="a"> Windows ME<br>
<input type="radio" name="system" value="b"> Windows 2000 Home Edition<br>
<input type="radio" name="system" value="c"> Windows 7 Starter<br>
<input type="radio" name="system" value="d"> Windows Vista Ultimate<br>


<p>Wie nennt man die Grundlage eines PCs?</p>
<br>
<input type="radio" name="grundlage" value="a"> Prozessor<br>
<input type="radio" name="grundlage" value="b"> Bildschrim<br>
<input type="radio" name="grundlage" value="c"> Festplatte<br>
<input type="radio" name="grundlage" value="d"> Mainboard<br>
<br>

<p>Wieviele Tasten hat eine Standarttastatur?</p>
<br>
<input type="radio" name="tastatur" value="a"> 105<br>
<input type="radio" name="tastatur" value="b"> 52<br>
<input type="radio" name="tastatur" value="c"> 300<br>
<input type="radio" name="tastatur" value="d"> 80<br>
<br>

<p>Was ist keine Bildschirmtechnologie?</p>
<br>
<input type="radio" name="bildschirm" value="a"> CRT<br>
<input type="radio" name="bildschirm" value="b"> TFT<br>
<input type="radio" name="bildschirm" value="c"> Plasma<br>
<input type="radio" name="bildschirm" value="d"> Laser<br>
<br>

<p>Welches ist das aktuelle Grafikkarten-Topmodell von NVidia (18.05.2010)?</p>
<br>
<input type="radio" name="graka" value="a"> GeForce 9600 GT<br>
<input type="radio" name="graka" value="b"> GeForce 4 Ti<br>
<input type="radio" name="graka" value="c"> GeForce GTX 480<br>
<input type="radio" name="graka" value="d"> Radeon HD 5970<br>
<br>


<p>Wie groß sind die derzeit am Markt befindlichen größten Festplatten?</p>
<br>
<input type="radio" name="platte" value="a"> 160 GB<br>
<input type="radio" name="platte" value="b"> 200 TB<br>
<input type="radio" name="platte" value="c"> 4 MB<br>
<input type="radio" name="platte" value="d"> 2,5 TB<br>
<br>
</form>
<br>
<br>
<br>
<input type="button" value="Auswerten" onClick="auswerten()">
<input type="reset" value="Löschen">
</body>
</html>

MfG Dalai
 
Code:
if (variable) then
   do_sth
fi

MfG Dalai

Ist das nicht nach Belieben anders. Weil ich mag den Stil, bei dem man auch booleans per == vergleicht, weil man da den Code viel leichter lesen kann. Mach ich selbst auch so, wenn es nicht ersichtlich ist, was gemeint ist.
 
Man macht es nicht, weil true normalerweise eine Konstante ist (bei Delphi true=1). Hat die verglichene Variable nun aber einen anderen Wert, scheitert der Vergleich. Das passiert nicht, wenn man nicht direkt mit true vergleicht, sondern den Compiler (oder Interpreter) machen lässt, der merkt schon, dass es sich um eine boolsche Operation handelt.

Irgendwo hab ich das mal vernünftig erklärt gelesen, ich find's momentan nicht mehr wieder.

MfG Dalai
 
Man macht es nicht, weil true normalerweise eine Konstante ist (bei Delphi true=1). Hat die verglichene Variable nun aber einen anderen Wert, scheitert der Vergleich. Das passiert nicht, wenn man nicht direkt mit true vergleicht, sondern den Compiler (oder Interpreter) machen lässt, der merkt schon, dass es sich um eine boolsche Operation handelt.

Irgendwo hab ich das mal vernünftig erklärt gelesen, ich find's momentan nicht mehr wieder.

MfG Dalai

Hmm, ich verstehe schon was du meinst... Aber das hier "Hat die verglichene Variable nun aber einen anderen Wert, scheitert der Vergleich." finde ich unlogisch, bzw. weiß nicht, was du damit sagen willst... Was ist da dran so shclimm, wenn man so vergleicht?

EDIT:

Meinst du diesen Link?

http://www.delphipraxis.net/topic68256,0,asc,0.html&sid=f8ab5251373f05726ee0a9b84684f81d
.
EDIT :
.

Ich glaub ich habs verstanden, sobald man irgendwelche Blöden Casts macht gibts Probleme :).

Ist das nur in Delphi so?
 
Zuletzt bearbeitet:
Ich hab's wiedergefunden: http://www.delphipraxis.net/topic68256_ueber+den+umgang+mit+boolean.html

Darin geht es zwar um Delphi, aber ich gehe davon aus, dass das bei anderen Programmiersprachen in bestimmten Fällen auch so ist. Ich lag also mit meiner Erinnerung, dass bei Delphi true=1 wäre, teilweise falsch. Nunja, man sollte eben nicht gleichzeitig einen Gedächtnistest schauen ;D.

Ergänzung: Ich denke, hier kommt es auf die Deklaration/Definition der jeweiligen Programmiersprache an, ob true immer denselben Wert oder auch mal andere Werte haben kann.

MfG Dalai
 
Zuletzt bearbeitet:
Ich hab den Link schneller gehabt :P.

Wenn ich jetzt nichts verdreh, machen wir das in der Schule trotzdem mit ==, bin mir aber nicht sicher...

Hab aber mein Game auch gleich mal auf besseren Programmierstil geändert. Ich hab den Aufruf doch nicht so oft gemacht, im Grund eigentlich fast nie...
 
Selber denken macht schlau. Nicht alles glauben, was einem in der Schule erzählt wird.

In C/C++ kann man so z.B. Pointer auf validität prüfen. Im Normalfall ist kann man auch auf true prüfen, da NULL = 0. Dies ist alerdings nur in einem Standardheader definiert, NULL kann aber durchaus auch andere Werte annehmen. Deswegen ist der direkte Verglich in if() immer einem boolschen vorzuziehen.
 
Hmm, ich glaub aber doch nicht, dass wir sowas gemacht haben... Wäre ja lächerlich...
 
Auch wenn es jetzt zu gehen scheint, würde ich Dir raten den <form>-Bereich auch am Ende kurz vor </body> mit </form> wieder zu schließen!
 
Auch wenn es jetzt zu gehen scheint, würde ich Dir raten den <form>-Bereich auch am Ende kurz vor </body> mit </form> wieder zu schließen!
Stimmt. Geschlossen wird er, allerdings vor den beiden Buttons, also an der falschen Stelle. Interessant, wie viele Fehler man in so wenige Zeilen stecken kann ;D.

MfG Dalai
 
Stimmt. Geschlossen wird er, allerdings vor den beiden Buttons, also an der falschen Stelle. Interessant, wie viele Fehler man in so wenige Zeilen stecken kann ;D.

MfG Dalai

Da fällt mir die Geschichte von dem Kerl ein, der HTML auf Deutsch programmiert hat xD. <Körper> anstatt <body> und so xD...
 
Zurück
Oben Unten