Bestellformular wirft Fehler NaN aus warum? Hilfe!

WetGun

Mitglied
Bin neu in Sachen Java und hab da nen Problem! Muss nen Bestellformular entwickeln was über Radiobuttons Werte zusammenrechnet und einem Textfeld ausgibt! aber irgendwas mach ich falsch! Was noch wichtig ist: sobald ein Radiobutton gedrückt wird soll im Textfeld automatisch der Wert berechnet werden.
Was ich bisher habe:

Code:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function plus(){
document.rechentest.Summe.value=eval(document.rechentest.Web.value)
+eval(document.rechentest.Logo.value)+eval(document.rechentest.Banner.value)
}
//-->
</script>

</head>

<body onload="plus()" bgcolor="#FFFFFF" text="#000000">
<form name="rechentest">
  <table width="318" border="0" cellspacing="0" cellpadding="0" height="266">
    <tr> 
      <td width="165">Webdesign</td>
      <td width="153"> 
        <div align="center">
          <input type="radio" name="Web" value="312"
		  onClick="this.form.Summe.value="plus(this);">
          <input type="radio" name="Web" value="0"
		  onClick="this.form.Summe.value="plus(this);" checked>
        </div>
      </td>
    </tr>
    <tr> 
      <td width="165">Logodesign</td>
      <td width="153"> 
        <div align="center">
          <input type="radio" name="Logo" value="145"
		  onClick="this.form.Summe.value="plus(this);">
          <input type="radio" name="Logo" value="0" 
		  onClick="this.form.Summe.value="plus(this);" checked>
        </div>
      </td>
    </tr>
    <tr> 
      <td width="165">Banner</td>
      <td width="153"> 
        <div align="center">
          <input type="radio" name="Banner" value="78"
		  onClick="this.form.Summe.value="plus(this);">
          <input type="radio" name="Banner" value="0"
		  onClick="this.form.Summe.value="plus(this);" checked>
        </div>
      </td>
    </tr>
    <tr> 
      <td width="165">Flyer</td>
      <td width="153"> 
        <div align="center"></div>
      </td>
    </tr>
    <tr> 
      <td width="165">Plakat</td>
      <td width="153"> 
        <div align="center"></div>
      </td>
    </tr>
    <tr> 
      <td width="165">Werbezettel</td>
      <td width="153"> 
        <div align="center"></div>
      </td>
    </tr>
    <tr> 
      <td width="165">Summe Gesamt:</td>
      <td width="153"> 
        <div align="center">
          <input type="text" name="Summe" value="0" readonly onFocus="this.blur();">
        </div>
      </td>
    </tr>
  </table>
</form>
</body>
</html>

Bitte helft mir:(

Danke schonmal im vorraus
 
Hi,

die einzelnen Elemente innerhalb einer Radiogruppe müssen in JavaScript auch
einzeln angesprochen werden.

Weiterhin musst Du auswerten, welche Option innerhalb einer Radiogruppe gesetzt
wurde.

Folgendes Script sollte Dein Problem lösen.
Code:
// Array für die Namen der Radiogruppen
var arrRadio = new Array("Web", "Logo", "Banner");

function plus(objElement){
    var intSumme = 0;
    // Radio-Gruppen durchlaufen (hier: 3 Gruppen)
    for(var i=0; i<3; i++){
        // Optionen einer einzelnen Radiogruppe durchlaufen (hier: 2 Optionen)
        for(var j=0; j<2; j++){
            // Falls die Option gesetzt wurde
            if(document.rechentest.elements[arrRadio[i]][j].checked == true){
                intSumme += Number(document.rechentest.elements[arrRadio[i]][j].value);
            }
        }
    }
    return intSumme;
}
Ciao
Quaese
 
Keine Ausgabe in Textfeld

Danke, ich hab jetzt zwar nicht mehr die NaN Fehlermeldung, aber wenn ich einen Radiobutton betätige gibt er mir nicht den Wert im Textfeld aus!
Liegt es vielleicht an den onClick Zuweisungen? Der ausgegebene Wert ist jetzt immer Null! :(
Ist es so überhaupt richtig? Sorry, bin totaler Newby :-(
Code:
<script language="JavaScript">
<!--

var arrRadio = new Array("Web", "Logo", "Banner");

function plus(objElement){
    var intSumme = 0;
    for(var i=0; i<3; i++){
        for(var j=0; j<2; j++){
            if(document.rechentest.elements[arrRadio[i]][j].checked == true){
                intSumme += Number(document.rechentest.elements[arrRadio[i]][j].value);
            }
        }
    }
    return intSumme;
}
{
document.rechentest.Summe.value=eval(document.rechentest.Web.value)
+eval(document.rechentest.Logo.value)+eval(document.rechentest.Banner.value)
}
//-->
</script>
 
Quaese, du bist ein Gott !

Ich hatte dazu auch noch ein paar Gänsefüsschen zu viel,:-( dass soviel davon abhängt, wenn man eins zuviel oder zuwenig hat.

Wenn ich jetzt noch mehr Radiobuttons haben will muss ich also nur neue Arrays
Code:
var arrRadio = new Array("Web", "Logo", "Banner","Flyer","Plakat");
hinzufügen und var i
Code:
for (var i=0; i<5; i++)
erhöhen, auf z.B. 5?
Wenn ja , dann hab ich´s langsam geschnallt;) !

Und nur wenn ein Array mehr als 2 Radiobuttons hat verändert sich var j .
Geht das eigentlich auch Listen/Menüs und/oder Textfeldern?
Vielen herzlichen Dank!
 
Zuletzt bearbeitet:
Hi,

Du kannst davon ausgehen, dass Du es langsam geschnallt hast!

Das Script funktioniert jedoch nur, wenn alle Radio-Gruppen genau die
gleiche Anzahl Optionen besitzt (hier: 2).

Hätten die Options-Gruppen unterschiedliche Anzahlen an Optionen, so müsste das
Script angepasst werden.
Man könnte zum Beispiel einen zweiten Array anlegen, in dem die jeweilige Anzahl
Optionen notiert ist.
Code:
var arrOptions = new Array(2, 3, 4);
Hier hätte die erste Gruppe 2 Optionen, die zweite 3 und die dritte 4. Die Reihenfolge
der Anzahlen muss mit der Reihenfolge im arrRadio-Array übereinstimmen.

Die for-Schleife mit der Zählvariablen j müsste dann ebenfalls angepasst
werden.
Code:
;for(var j=0; j<arrOptions[i]; j++)
Listen und Textfelder lassen sich ebenfalls mit JavaScript bearbeiten - die Vorgehensweise unterscheidet sich jedoch.

Ciao
Quaese
 
Hi,

Sehr schön, ich danke dir und wünsche dir noch eine schöne Nacht, fummel schon den ganzen Tag daran rum und jetzt kann ich ganz ruhig schlafen
:)
Danke
 

Neue Beiträge

Zurück