Matti Mäkitalo: Variablenübergabe bei Auswahlbox

Hallo Forumer

Bei dem unten aufgeführten Code geht es darum, in einer Selectbox einen Wert einzustellen. Daraufhin soll eine Tabelle mit genau der Anzahl an Input-Feldern erscheinen.
1. Ich hab hier ein kleines Problem mit einem selbstgemachten JavaScript. Und zwar führen es weder der Opera noch Netscape richtig aus. Netscape zeigt nichts an. Ich denke, daß das Problem hier bei der Variablenübergabe liegt. Oben im Titel zeigt Netscape nämlich 'Ihr Test mit null Testfeldern' an, ein Anzeichen dafür, daß Netscape die Variable 'x' oder vielleicht auch 'i' nicht richtig bekommt. Opera zeig die Variabel x mit dem Wert 1 an, und zeigt auch ein Eingabefeld an, aber oben im Titel der Seite steht auch 'null'...   Es gibt dabei keine Fehlermeldung. Der IE5 dagegen macht es und zeigt auch das Ergebnis, daß ich haben will.

2. Das ganze wollt ich mir eigentlich in einem Div (bzw. Layer) unterhalb des Auswahlfeldes anzeigen lassen. Ich glaube, daß dies mit ungefähr mit document.all.meindiv.innerHTML und ähnlichem funktioniert. Ich habe eine do-while Schleife da drinnen. Und ich hatte eigentlich gedacht, den ganzen Text, der momentan geschrieben wird, in eine Variable zu packen. Wie schaffe ich es, den ganzen Text aus der Schleife z.B. fünfmal in die Variable zu schreiben.

<script language="JavaScript">
<!--
function testfelder(x)
{
document.writeln("<html><head><title>Ihr Test, mit " + x + " Testfeldern</title></head><body bgcolor=#FFFFFF>");
document.writeln("<form action="mailto:test@test.de?subject=Test" method="post" enctype="text/plain">");
document.writeln("<table border="1" align="left">");
var i = 1;
do {
document.writeln("<tr><th>" + i + ". </th><td><input width="50" name="Testfeld Nr. " + i + ""></td></tr>");
i = i + 1;
}
while ( i <= x );
document.writeln("<tr><th><input type="reset" value="Felder löschen" width="30"></th><th><input type="submit" value="Abschicken" width="30"></th></tr>");
document.writeln("</table>");
document.writeln("</form>");
document.writeln("</body></html>");
}
//-->
</script>
<body bgcolor=#FFFFFF>
<form name="auswahl">
<select size=1 name="selectbox" onChange="testfelder(document.auswahl.selectbox.value)" width="150">
<option checked value="nothing">Anzahl der Testfelder</option>
<option value="nothing">------------------------
<option value="5"> 5
<option value="10"> 10
<option value="25"> 25
<option value="50"> 50
<option value="75"> 75
<option value="100"> 100
<option value="150"> 150
<option value="200"> 200
</select>
</form>

MfG Matti

  1. Hallo Matti!

    In JavaScript wird der Wert der ausgewaehlten Option mit
    document.auswahl.selectbox.options[document.auswahl.selectbox.selectedIndex].value
    abgefragt. Am besten uebergibst Du Deiner Funktion die Selectbox als Objekt
        testfelder(document.auswahl.selectbox);
    und beginnst die Funktion ungefaehr so:
        function testfelder(sel) {
            var x;
            x = sel.options[sel.selectedIndex].value
            ...

    Bei dem unten aufgeführten Code geht es darum, in einer Selectbox einen Wert einzustellen. Daraufhin soll eine Tabelle mit genau der Anzahl an Input-Feldern erscheinen.

    1. Ich hab hier ein kleines Problem mit einem selbstgemachten JavaScript. Und zwar führen es weder der Opera noch Netscape richtig aus. Netscape zeigt nichts an. Ich denke, daß das Problem hier bei der Variablenübergabe liegt. Oben im Titel zeigt Netscape nämlich 'Ihr Test mit null Testfeldern' an, ein Anzeichen dafür, daß Netscape die Variable 'x' oder vielleicht auch 'i' nicht richtig bekommt. Opera zeig die Variabel x mit dem Wert 1 an, und zeigt auch ein Eingabefeld an, aber oben im Titel der Seite steht auch 'null'...   Es gibt dabei keine Fehlermeldung. Der IE5 dagegen macht es und zeigt auch das Ergebnis, daß ich haben will.

    2. Das ganze wollt ich mir eigentlich in einem Div (bzw. Layer) unterhalb des Auswahlfeldes anzeigen lassen. Ich glaube, daß dies mit ungefähr mit document.all.meindiv.innerHTML und ähnlichem funktioniert. Ich habe eine do-while Schleife da drinnen. Und ich hatte eigentlich gedacht, den ganzen Text, der momentan geschrieben wird, in eine Variable zu packen. Wie schaffe ich es, den ganzen Text aus der Schleife z.B. fünfmal in die Variable zu schreiben.

    <script language="JavaScript">
    <!--
    function testfelder(x)
    {
    document.writeln("<html><head><title>Ihr Test, mit " + x + " Testfeldern</title></head><body bgcolor=#FFFFFF>");

    Bevor man ein (bereits geladenes) Dokument beschreibt, oeffnet man es normalerweise mit document.open(). Da kenn ich mich aber nicht so aus, ich benutze das selten. Vor allem halte ich es fuer kritisch, in dasselbe Dokument zu schreiben, in dem der JS-Code liegt.

    »»  document.writeln("<tr><th>" + i + ". </th><td><input width="50" name="Testfeld Nr. " + i + ""></td></tr>");

    Kein guter Name fuer ein Element. Leerzeichen und Punkt besser weglassen.

    <option value="100"> 100
    <option value="150"> 150
    <option value="200"> 200

    Ein wegelassenes </option> Tag kann auch zu Problemen fuehren.

    So long