CheckBox onClick soll Summe von Werten ergeben
Konrad Herzog
- javascript
0 plan_B0 plan_B
0 plan_B0 Konrad Herzog0 plan_B0 Konrad Herzog0 Struppi
0 Struppi
Hallo zusammen
Ich brauche bei einer CheckBox Liste eine Summe von Werten.
Ist die CheckBox checked, soll der Betrag zum Total hinzu-
kommen, sonst soll er nicht dabei sein (logischerweise).
Mein Versuch (anhand eines Scripts, das ich gefunden habe)
addiert nun manchmal richtig, manchmal nicht und ich finde
den Fehler einfach nicht. So sieht das bis jetzt aus:
<script language="JavaScript">
<!--
function addition(myValue){
var std = myValue; // Betrag, der dazugezählt werden soll
var summe = 0; // Anfangsbetrag
for(i=0; i < document.myForm.ArtikelCheckListe.length; i++){
if(document.myForm.ArtikelCheckListe[i].type == 'checkbox' && document.myForm.ArtikelCheckListe[i].checked != ''){
summe = summe + Number(std);
}
}
document.RetourenForm.result.value = summe;
}
//-->
</script>
<form name="myForm" action="save.asp" method=post>
<input onClick="addition(48);" type="checkbox" name="ArtikelCheckListe" value="blabla1">
<input onClick="addition(23);" type="checkbox" name="ArtikelCheckListe" value="blabla2">
<input onClick="addition(16);" type="checkbox" name="ArtikelCheckListe" value="blabla3">
<input type=text id="result" readOnly>
</form>
Bin für jede Hilfe dankbar...
Hallo,
wenn ich es richtig sehe, spielt sich alles innerhalb eines forms ab, und das Teil heisst "myForm" und nicht "RetourenForm".
function addition(myValue){
var std = myValue; // Betrag, der dazugezählt werden soll
var summe = 0; // Anfangsbetrag
var frm=document.myForm; // diese Variable macht es einfacher
for(i=0; i < frm.ArtikelCheckListe.length; i++){
if(frm.ArtikelCheckListe[i].type == 'checkbox' && frm.ArtikelCheckListe[i].checked != ''){
summe = summe + Number(std);
}
}
frm.result.value = summe;
}
Gruß plan_B
Korrektur:
if(frm.ArtikelCheckListe[i].type == 'checkbox' && frm.ArtikelCheckListe[i].checked != ''){
checked ist in js vom Typ boolean, deswegen
if(frm.ArtikelCheckListe[i].type == 'checkbox' && frm.ArtikelCheckListe[i].checked ){
Gruß plan_B
Hallo,
Mein Versuch (anhand eines Scripts, das ich gefunden habe)
addiert nun manchmal richtig, manchmal nicht und ich finde
den Fehler einfach nicht. So sieht das bis jetzt aus:
soll das Script schon mal funktioniert haben? egal ob nun ein Kreuz gesetzt oder gelöscht wird, findet die Addition statt, d.h. im Endeffekt:
myForm.result.value=myValue;
so einfach wie ich anfangs dachte, ist es doch nicht ....
Gruß plan_B
Hallo
wenn ich es richtig sehe, spielt sich alles innerhalb eines
forms ab, und das Teil heisst "myForm" und nicht "RetourenForm".
War nur ein Übertragungsfehler, Sorry...
soll das Script schon mal funktioniert haben?
Es funktioniert, aber seltsam. Habe hier mal ein Beispiel, wie weit
das Ding seine Arbeit tut:
<script language="JavaScript">
<!--
function addition(myValue){
var std = myValue; // Der Betrag der dazugezählt werden soll
var summe = 0; // Der Anfangsbetrag
var frm=document.RetourenForm;
for(i=0; i < frm.ArtikelCheckListe.length; i++){
if(frm.ArtikelCheckListe[i].type == 'checkbox' && frm.ArtikelCheckListe[i].checked ){
summe = summe + Number(std);
}
}
frm.result.value = summe;
}
//-->
</script>
<form name="RetourenForm" action="save.asp" method=post>
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593280">
--> onclick frm.result.value = 24
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593281">
--> onclick frm.result.value = 48
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593282">
--> onclick frm.result.value = 72
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593283">
--> onclick frm.result.value = 96
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593284">
--> onclick frm.result.value = 120
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593285">
--> onclick frm.result.value = 144
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593286">
--> onclick frm.result.value = 168
So weit eigentlich alles, wie es sein soll. Auch wenn man Häckchen
entfernt werden die Beträge sauber wieder subtrahiert. Aber dann
kommt das grosse Rätsel:
<input onClick="addition(46);" type="checkbox" name="ArtikelCheckListe" value="593287">
--> onclick frm.result.value = 368 ???
<input onClick="addition(23);" type="checkbox" name="ArtikelCheckListe" value="593288">
--> onclick frm.result.value = 207 ???
</form>
checked ist in js vom Typ boolean
--> hat nicht geholfen.
Hallo,
soll das Script schon mal funktioniert haben?
Es funktioniert, aber seltsam.
dann würde ich dir raten, doch Struppi's elegante Version zu verwenden, und die deinen Bedürfnissen anzupassen.
<form name="myForm" action="save.asp" method=post>
<input onClick="addition(this,24);" type="checkbox" name="ArtikelCheckListe" value="593286">
<input onClick="addition(this,46);" type="checkbox" name="ArtikelCheckListe" value="593287">
<input onClick="addition(this,23);" type="checkbox" name="ArtikelCheckListe" value="593288">
<input type=text name="result" readOnly>
</form>
<script type="text/javascript">
[code lang=javascript]
function addition(el,wert){
var summe = 0; // Anfangsbetrag
el.value2=wert;
var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen
for(var i = 0; i < liste.length; i++)
summe += (liste[i].checked && liste[i].value2) ? liste[i].value2 : 0;
el.form.result.value = summe;
}
</script>[/code]
Gruß plan_B
dann würde ich dir raten, doch Struppi's elegante Version zu
verwenden, und die deinen Bedürfnissen anzupassen.
Und genau das hat mir weitergeholfen! Problem gelöst, vielen
Dank euch allen für eure Hilfe!
Gruss
Konrad "Nie mehr wieder Javascript" Herzog
<script language="JavaScript">
Das language Attribut ist veraltet und das notwendige type Attribut fehlt.
<!--
Ein HTML Kommentar im Skriptblock ist veraltet ausser für Browser der allerersten Gerneration nicht notwendig.
Das ganez ließe sich einfacher umsetzen.
<form name="myForm" action="save.asp" method=post>
<input onClick="addition(this);" type="checkbox" name="ArtikelCheckListe" value="48">
<input onClick="addition(this);" type="checkbox" name="ArtikelCheckListe" value="23">
<input onClick="addition(this);" type="checkbox" name="ArtikelCheckListe" value="16">
<input type=text name="result" readOnly>
</form>
<script type="text/javascript">
~~~~~~javascript
function addition(el){
var summe = 0; // Anfangsbetrag
var liste = el.form[el.name]; // Die Liste aller Checkboxen mit dem Namen
for(var i = 0; i < liste.length; i++) summe += parseInt( liste[i].checked ? liste[i].value : 0);
el.form.result.value = summe;
}
~~~`</script>`{:.language-html}
Struppi.
--
[Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)
Hi Struppi
Das ganez ließe sich einfacher umsetzen.
Danke für den Tipp. Nur ist ja gerade mein grosses Problem,
dass value=".." schon von einer ID besetzt ist, die ich un-
bedingt übergeben muss...
hi,
Danke für den Tipp. Nur ist ja gerade mein grosses Problem,
dass value=".." schon von einer ID besetzt ist, die ich un-
bedingt übergeben muss...
Kannst du das bitte noch mal so formulieren, dass es auch für Menschen einen Sinn ergeben kann, die nicht in deinem Kopf leben?
gruß,
wahsaga
Kannst du das bitte noch mal so formulieren, dass es auch für
Menschen einen Sinn ergeben kann, die nicht in deinem Kopf leben?
Ich versuche es.
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593280">
--> value="EineID" ist belegt, ich kann es nicht mit dem Wert
füllen, den ich addieren möchte.
Hier nochmals das Script:
<script language="JavaScript">
<!--
function addition(myValue){
var std = myValue; // Der Betrag der dazugezählt werden soll
var summe = 0; // Der Anfangsbetrag
var frm=document.RetourenForm;
for(i=0; i < frm.ArtikelCheckListe.length; i++){
if(frm.ArtikelCheckListe[i].type == 'checkbox' && frm.ArtikelCheckListe[i].checked ){
summe = summe + Number(std);
}
}
frm.result.value = summe;
}
//-->
</script>
<form name="RetourenForm" action="save.asp" method=post>
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593280">
--> onclick frm.result.value = 24
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593281">
--> onclick frm.result.value = 48
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593282">
--> onclick frm.result.value = 72
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593283">
--> onclick frm.result.value = 96
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593284">
--> onclick frm.result.value = 120
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593285">
--> onclick frm.result.value = 144
<input onClick="addition(24);" type="checkbox" name="ArtikelCheckListe" value="593286">
--> onclick frm.result.value = 168
So weit eigentlich alles, wie es sein soll. Auch wenn man Häckchen
entfernt werden die Beträge sauber wieder subtrahiert. Aber dann
kommt das grosse Rätsel:
<input onClick="addition(46);" type="checkbox" name="ArtikelCheckListe" value="593287">
--> onclick frm.result.value = 368 ???
<input onClick="addition(23);" type="checkbox" name="ArtikelCheckListe" value="593288">
--> onclick frm.result.value = 207 ???
</form>