Der Martin: Java Script: Wenn INPUT ausgewählt dann...

Beitrag lesen

Hallo,

Ich habe jetzt ein System was mir reicht.

anscheinend doch nicht ... ;-)

Jetzt habe ich das Problem das alle Inputs die ich nicht im Skript Definiert habe dafür sorgen, dass die "Auswertung" nicht arbeitet.

Ich verstehe beim besten Willen nicht, was du damit meinst. Zwar sehe ich auf Anhieb ein gravierendes Problem in deinem Script, aber trotzdem: Beschreibe bitte etwas genauer, was du meinst.

function counter() {

  if (document.getElementById('AG02a').checked  == true) {
   a = parseInt(AG02a.value) ;
  }

  if (document.getElementById('AG03a').checked  == true) {
   b = parseInt(AG03a.value) ;
  };


x = a + b 

document.write("Punkte=  "+ x +"/1")
}

Erstens:

if (document.getElementById('AG02a').checked == true)

Die checked-Eigenschaft ist schon ein boolescher Wert. Diesen nochmal explizit auf true zu vergleichen, ist zwar nicht schädlich, aber unnötig. Also:

if (document.getElementById('AG02a').checked)

Sieht angenehmer aus und liest sich besser.

Zweitens:

x = a + b

Weder a, noch b, noch x sind irgendwo deklariert. Die werden daher bei der ersten Zuweisung angelegt, und zwar als globale Variablen. Das ist nicht schön, das möchte man normalerweise nicht. Deklariere daher am Anfang der Funktion:

var a, b, x;

Problematisch ist aber, dass a bzw. b gar nicht angelegt werden, wenn die zugeordnete Checkbox nicht markiert ist. Dann erzeugt der Zugriff darauf einen Javascript-Fehler.

Und drittens:

document.write("Punkte= "+ x +"/1")

Das bricht dir vermutlich das Genick. Denn wenn document.write() nach dem Rendern des Dokuments noch aufgerufen wird, dann wird das geladene Dokument durch den neu ausgegebenen Inhalt ersetzt. Du solltest daher lieber das Ergebnis als Inhalt eines dafür vorgesehenen Elements setzen. Dazu eignet sich die innerHTML-Eigenschaft sehr gut.

<head></head>
<body>
<form>
  <fieldset>
	 <legend>Von wann bis wann ging der 1.Weltkrieg?</legend> 
	  <INPUT TYPE="radio" id="AG02a" NAME="frage2" VALUE="1">1914-1918
	  <INPUT TYPE="radio" id="AG02b" NAME="frage2" VALUE="0">1899-1907
	  <INPUT TYPE="radio" id="AG02c" NAME="frage2" VALUE="0">1912-1915
	  <INPUT TYPE="radio" id="AG02d" NAME="frage2" VALUE="0">1915-1919
	  <INPUT TYPE="radio" id="AG02e" NAME="frage2" VALUE="0">1933-1940
  </fieldset>	 
</form>
	<br>
<form>
  <fieldset>
	 <legend>Von wann bis wann ging der 1.Weltkrieg?</legend> 
	  <INPUT TYPE="radio" id="AG03a" NAME="frage3" VALUE="1">1914-1918
	  <INPUT TYPE="radio" id="AG03b" NAME="frage3" VALUE="0">1899-1907
	  <INPUT TYPE="radio" id="AG03c" NAME="frage3" VALUE="0">1912-1915
	  <INPUT TYPE="radio" id="AG03d" NAME="frage3" VALUE="0">1915-1919
	  <INPUT TYPE="radio" id="AG03e" NAME="frage3" VALUE="0">1933-1940
  </fieldset>	 
</form>	
<input type=button value="Auswertung" onClick="counter()">	
</body> 

Tipp: Es ist üblich, Element- und Attributnamen konsequent in Kleinbuchstaben zu schreiben.

Wie schaffe ich es das das Skript die anderen Inputs ignoriert? Oder liegt es daran dass das skript die Auswahl nicht bestätigen kann?

Du sprichst in Rätseln.

So long,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy