• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Radiobuttons sind undefined bei alert()

Vony

New member
Hallo Zusammen,

ich habe nun schon Stunden damit verbracht den Fehler in meinem Code zu suchen. Ich finde ihn aber leider nicht. Auch die Suche im Internet und im Forum hat mich nicht weiter gebracht :-( Deshalb hoffe ich nun auf Euch!

Zu meinem Code, für was ich ihn brauche und warum er so ist, wie er ist ;-): ich bin Referendarin und habe eine Lehrprobe nächste Woche. Meine Schüler sollen eine erste Einführung in die Interaktion zwischen Anwender und Programm am Beispiel einer Website erhalten. Aufgabe ist es, ein Formular in eine HTML-Seite zu schreiben. Das Bestätigen des Senden-Button soll eine erste Reaktion zeigen und die Anwenderdaten des Formulars einlesen und ausgeben - ich schreibe Euch das, weil ich weiß, dass meine Lösung sehr simpel gehalten ist und es programmiertechnisch schönere Lösungen gibt. Ich habe die Ausgabe über einen alert-Befehl gelöst. In diesen müssen die Schüler nur noch eingeben, was ausgegeben werden soll, also nur noch den Text in alert (); ergänzen. Die Schüler haben nur 20 Minuten Zeit und alles andere wäre meiner Meinung nach einfach zu viel. Ist ja ihre erste Stunde mit JS ;-)

So, nun das eigentliche Problem: meine Abfrage gibt immer undefined für die Radiobuttons der Anrede aus - kann mir da bitte jemand helfen?

Hier der komplette Code der Seite - ich poste Euch den gesamte Code, weil ich mir nicht sicher bin, ob der Fehler irgendwo in einem ganz anderen Bereich liegen könnte. Die Bereiche des Formulars und der alert-Variablen habe ich zum schnelleren Finden gelb markiert.

Code:
<html>
	<head> 
			<title>Intranet - xy GmbH</title> <meta charset="utf-8" /> 
			<cleaned_tag name="description" content="Kurzbeschreibung"/>
			<link href="design.css" type="text/css" rel="stylesheet"/>
			
			
			<script type="text/javascript">
               function ausgabe() /*Funktion der Ausgabe*/
               {
                alert([BGCOLOR=yellow]"Vielen Dank, " + IT.anrede.value + " " +
                IT.vname.value + " " + IT.nname.value 
                + ", wir haben Ihre Anfrage erhalten! Typ der Nachricht: " + IT.eilt.value 
                + ". " + IT.typ.value + ": "+ IT.user_eingabe.value[/BGCOLOR]);
                } /*Ende der Ausgabe*/
            </script>
	</head> 

<body>


	<div id="top_header"> 
		<a href="index.html"> <img src="xy.png"></a>
	</div>	
		 
	<nav>		
		<ul>	
				<li><a href="index.html">Home</a></li>		<!--- ID zum Makieren der Besuchten Seite --->
				<li><a href="02_mitarbeiter.html">Mitarbeiter</a></li>
				<li><a href="03_datenbank.html">Bilddatenbank</a></li>
				<li><a href="#">Raumreservierung</a></li>
				<li><a href="#">Büromaterial</a></li>
				<li><a href="#">Urlaubsantrag</a></li>
				<li><a href="07_IT.html" id="highlight">IT</a></li>
		</ul>
	</nav>
		
	<div id="news">
		<h2> +++ News +++</h2> <br class=break>								<!--- ID um Umbruch später auszublenden --->
			Hier stehen tolle Neuigkeiten<hr>													<!--- Trenn-Linie --->
	</div>

	<div id="spalte_mitte"> 
		<h3> Bitte füllen Sie das nachfolgende Formular aus, um ein Problem zu melden: </h3> <br>
	<fieldset>
	<[BGCOLOR=yellow]form method="post" id="IT" name="IT" onsubmit="return ausgabe()"> <!--- Formular beginnt --->
		
        	<label for "anrede">Anrede: </label> <!--- Text vor radio-Buttons --->
        	<input type="radio" name="anrede" id="frau" checked="checked" value="Frau"/>Frau<!--- wichtig ist hier nicht die id, sondern der Name --->
        	<input type="radio" name="anrede" id="herr" value="Herr"/>Herr<br><!--- Radio-Button für "Herr" --->
        <br>
        
        	<label for "vorname">Vorname:</label>
        	<input type="text" name="vname" id="vname" /> <!--- einfaches Textfeld --->
      
        <br>
        <br>
       
        	<label for "name">Nachname:</label>
        	<input type="text" name="nname" id="nname" /> <!--- einfaches Textfeld --->
        
        <br>
        <br>
        Bitte ordnen Sie das Problem einer Kategorie zu:
        	<select id="typ" name="typ"> <!--- Dropdown --->
                    <option value="">Keine Angabe</option> <!--- Optionen für dropdown --->
                    <option value="Hardwareproblem">Hardwareproblem</option>
                    <option value="Softwareproblem">Softwareproblem</option>
                    <option value="Netzwerkproblem">Netzwerkproblem</option>
                    <option value="E-Mail-Problem">E-Mail-Problem</option>
                    <option value="Sonstiges Problem">Sonstiges Problem</option>
        	</select><br>
          <br>
        Bitte geben Sie die Dringlichkeit Ihres Anliegens an:
        	<select id="eilt" name="eilt"> <!--- Dropdown --->
                    <option value="">Keine Angabe</option> <!--- Optionen für dropdown --->
                    <option value="eilt">Eilt</option>
                    <option value="eilt nicht">Eilt nicht</option>
        	</select><br><br>
        
        <label for "problem">Problembeschreibung:</label>
        <textarea name="user_eingabe" id="prob" cols="50" rows="10"></textarea> <!--- mehrzeiliges Textfeld, cols für Spalten, rows für zeilen --->
        
        <br>
     		<input type="submit" class="Button" value="Senden"> <!--- Senden-Button --->
     </form>[/BGCOLOR]   	
	</fieldset>
	
	</div>

	<div id="footer">
		<b> Letzte Aktualisierung: 17.03.2015 </b>
	</div>

</body>
</html>

Ich hoffe es ist simpel und Ihr könnt mir schnell helfen.

Vielen Dank!

Viele Grüße
Vony
 
Echt??

Bei mir geht es immer noch nicht. Liegt es vielleicht am Browser? Ich arbeite am Mac, meine Schüler leider auch.
Ich habe es hier in Safari und in Firefox ausprobiert. Welchen Browser verwendest Du?

Danke für die schnelle Rückmeldung!
 
Ich habe es eben in Firefox unter Windows ausprobiert - funktioniert einwandfrei. Danke! Damit ist ein Teil meines Problems zumindest schon gelöst :)

Nun habe ich aber noch das Problem, dass es nicht unter MAC OS läuft und die Schüler sitzen alle am Mac... Ohje!

Ich probiere mal noch andere Browser auf dem Mac aus... vielleicht finde ich ja noch einen, der es richtig macht. Hoffnung habe ich allerdings wenig, wenn ja schon Firefox unter Mac das nicht richtig ausliest.

Hat jemand eine Vermutung, woran es liegen könnte? Kann ich vielleicht noch irgendeinen Zusatz für den Browser installieren? Wahrscheinlich müsste ich hierzu in irgendeinem anderen Forum suchen.

- - - Aktualisiert - - -

Für diejenigen, die vielleicht zukünftig ein ähnliches Problem haben: mit Opera geht die Ausgabe der Radiobuttonauswahl :)

Damit noch mal ein dickes Dankeschön an Sempervivum!
 
Du arbeitest da mit automatisch globalen Variablen, die von deb Browsern unterschiedlich unterstützt werden. Eingentlich sind die auch gar keine gute Idee, da man damit viel zu leicht ein funktionierendes Stück JS durch irgendetwas ganz anderes zerstören kann.

Auch wenn du ein "document." davor schreibst macht, bin ich mir nich sicher, ob das wirklich jeder Browser richtig macht (und auch in Zukunft richtig macht).
Wenn du das sauber machen willst, solltest du mit document.getElementById() (dein <form> hat ja sowieso schon eine ID...) arbeiten:
Code:
<!DOCTYPE html>
<html>
	<head> 
		<title>Intranet - xy GmbH</title> <meta charset="utf-8" /> 
		<cleaned_tag name="description" content="Kurzbeschreibung"/>
		<link href="design.css" type="text/css" rel="stylesheet"/>
		
		
		<script type="text/javascript">
			function ausgabe(){ /*Funktion der Ausgabe*/
				var IT = document.getElementById("IT");
				alert(
					"Vielen Dank, " + IT.anrede.value + " " +
					IT.vname.value + " " + IT.nname.value 
					+ ", wir haben Ihre Anfrage erhalten! Typ der Nachricht: " + IT.eilt.value 
					+ ". " + IT.typ.value + ": "+ IT.user_eingabe.value
				);
				return false;
			} /*Ende der Ausgabe*/
		</script>
	</head> 
<body>


	<div id="top_header"> 
		<a href="index.html"> <img src="xy.png"></a>
	</div>	
		 
	<nav>		
		<ul>	
				<li><a href="index.html">Home</a></li>		<!--- ID zum Makieren der Besuchten Seite --->
				<li><a href="02_mitarbeiter.html">Mitarbeiter</a></li>
				<li><a href="03_datenbank.html">Bilddatenbank</a></li>
				<li><a href="#">Raumreservierung</a></li>
				<li><a href="#">Büromaterial</a></li>
				<li><a href="#">Urlaubsantrag</a></li>
				<li><a href="07_IT.html" id="highlight">IT</a></li>
		</ul>
	</nav>
		
	<div id="news">
		<h2> +++ News +++</h2> <br class=break>								<!--- ID um Umbruch später auszublenden --->
			Hier stehen tolle Neuigkeiten<hr>													<!--- Trenn-Linie --->
	</div>

	<div id="spalte_mitte"> 
		<h3> Bitte füllen Sie das nachfolgende Formular aus, um ein Problem zu melden: </h3> <br>
	<fieldset>
	<form method="post" id="IT" name="IT" onsubmit="return ausgabe()"> <!--- Formular beginnt --->
		
        	<label for "anrede">Anrede: </label> <!--- Text vor radio-Buttons --->
        	<input type="radio" name="anrede" id="frau" checked="checked" value="Frau"/>Frau<!--- wichtig ist hier nicht die id, sondern der Name --->
        	<input type="radio" name="anrede" id="herr" value="Herr"/>Herr<br><!--- Radio-Button für "Herr" --->
        <br>
        
        	<label for "vorname">Vorname:</label>
        	<input type="text" name="vname" id="vname" /> <!--- einfaches Textfeld --->
      
        <br>
        <br>
       
        	<label for "name">Nachname:</label>
        	<input type="text" name="nname" id="nname" /> <!--- einfaches Textfeld --->
        
        <br>
        <br>
        Bitte ordnen Sie das Problem einer Kategorie zu:
        	<select id="typ" name="typ"> <!--- Dropdown --->
                    <option value="">Keine Angabe</option> <!--- Optionen für dropdown --->
                    <option value="Hardwareproblem">Hardwareproblem</option>
                    <option value="Softwareproblem">Softwareproblem</option>
                    <option value="Netzwerkproblem">Netzwerkproblem</option>
                    <option value="E-Mail-Problem">E-Mail-Problem</option>
                    <option value="Sonstiges Problem">Sonstiges Problem</option>
        	</select><br>
          <br>
        Bitte geben Sie die Dringlichkeit Ihres Anliegens an:
        	<select id="eilt" name="eilt"> <!--- Dropdown --->
                    <option value="">Keine Angabe</option> <!--- Optionen für dropdown --->
                    <option value="eilt">Eilt</option>
                    <option value="eilt nicht">Eilt nicht</option>
        	</select><br><br>
        
        <label for "problem">Problembeschreibung:</label>
        <textarea name="user_eingabe" id="prob" cols="50" rows="10"></textarea> <!--- mehrzeiliges Textfeld, cols für Spalten, rows für zeilen --->
        
        <br>
     		<input type="submit" class="Button" value="Senden"> <!--- Senden-Button --->
     </form>   	
	</fieldset>
	
	</div>

	<div id="footer">
		<b> Letzte Aktualisierung: 17.03.2015 </b>
	</div>

</body>
</html>

PS: Deinem HTML fehlte eine DocType. Die ist wichtig!
PPS: Da du ja wahrscheinlich in diser Situation nicht willst, dass das Formular abgeschickt wird, hab' ich mal ein "return false;" in die Funktion eingebaut... wenn das doch der Fall ist, ist das "return" im onsubmit überflüssig.
PPPS: Deine Codeeinrückung ist nicht 100%ig konsistent.
 
Hallo Kkapsner,

danke für die hilfreichen Anmerkungen. Das mit dem Doctype habe ich total übersehen.

Noch zur Info: nach einem Update von Firefox hat die Ausgabe dann doch auf dem Mac geklappt.
 
Zurück
Oben