online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Computerfreaki vom 17.10.2020, 23:22 Options

Lösung

Anzahl der ausgefüllten Eingabefelder zählen - JavaScript

Hallo alle zusammen,
für die Schule soll ich probieren, einen Notenrechner in JavaScript zu programmieren. Was bis jetzt auch alles ganz gut läuft. Jetzt die Frage:
Ich habe vier Eingabefelder für die Noten der Schulaufgaben:

    <td><input type="text" id="sa_1" onchange="validation(this.id);" maxlength="1" /></td>
    <td><input type="text" id="sa_2" onchange="validation(this.id);" maxlength="1" /></td>
    <td><input type="text" id="sa_3" onchange="validation(this.id);" maxlength="1" /></td>
    <td><input type="text" id="sa_4" onchange="validation(this.id);" maxlength="1" /></td>

Jetzt müsste ich durch die Anzahl der ausgefüllten Felder herausbekommen.
So weit bin ich bis jetzt gekommen:

            for(var k = 0;k<=4;k++) {
                if(document.getElementById("sa_" + k).value != '') {
                    sazaehler++;
                 } 
             }

Es funktioniert aber irgendetwas nicht :-(
Gibts da noch andere Möglichkeiten ????

Wäre wenn ihr mir helfen könntet
Gruß Computerfreaki


Antwort schreiben

Antwort 1 von katy vom 18.10.2020, 08:02 Options

was sagt die Firefox-Fehlerkonsole?
Deine Fehler-Beschreibung ist nicht sehr hilfreich.

Und: natürlich gibt es andere Möglchkeiten. Dazu müsstest du aber auch erst einmal beschreiben, was du eigentlich vorhast.

katy

Antwort 2 von Computerfreaki vom 18.10.2020, 10:28 Options

Hallo katy,
Wie gesagt habe ich vier Eingabefelder. In diese kann man seine Noten eingeben:

    <td><input type="text" id="sa_1" onchange="validation(this.id);" maxlength="1" /></td>
    <td><input type="text" id="sa_2" onchange="validation(this.id);" maxlength="1" /></td>
    <td><input type="text" id="sa_3" onchange="validation(this.id);" maxlength="1" /></td>
    <td><input type="text" id="sa_4" onchange="validation(this.id);" maxlength="1" /></td>

Dann habe ich am Ende der Zeile einen Button, der dann die Funktion
sarechnen() aufruft. Diese soll:
Die Werte in den Eingabefeldern zusammenzählen, z.B so:

var sa1 =  parseInt(document.getElementById('sa_1').value);
var sa2 =  parseInt(document.getElementById('sa_2').value);
var sa3 =  parseInt(document.getElementById('sa_3').value);
var sa4 =  parseInt(document.getElementById('sa_4').value);
var gesamt = sa1 + sa2 + sa3 + sa4;

Wenn diese dann zusammengezählt sind, soll durch die Anzahl der ausgefüllten Eingabefelder geteilt werden.
Also wenn jetzt z.B. die ersten zwei Eingabefelder ausgefüllt sind, soll durch 2 geteilt werden. Wenn 3 ausgefüllt sind dann durch 3 teilen usw..

Und das Problem bekomme ich nicht in den Griff :-(

Antwort 3 von katy vom 18.10.2020, 10:45 Options

zwar fehlt mir immer noch die Fehlermeldung, aber es wird auch so gehen:

function sarechnen() {
var sazaehler=0;
var durchschnitt=0;
var sa1 =  parseInt("0"+document.getElementById('sa_1').value,10);
if (sa1>0) sazaehler++;
var sa2 =  parseInt("0"+document.getElementById('sa_2').value,10);
if (sa1>0) sazaehler++;
var sa3 =  parseInt("0"+document.getElementById('sa_3').value,10);
if (sa1>0) sazaehler++;
var sa4 =  parseInt("0"+document.getElementById('sa_4').value,10);
if (sa1>0) sazaehler++;
var gesamt = sa1 + sa2 + sa3 + sa4;
if (sazaehler>0) durchschnitt=gesamt/sazaehler;
return durchschnitt;
}


Die evtl. Fehlermeldungen, wenn nix an parseInt übergeben wird, musst du sowieso abfangen, nicht alle Browser übergeben dabei automatisch 0.
Ein 2ter Zugriff auf die input-felder ist somit überflüssig udn somit kann der fehler, der vermutlich dabei entsteht, vermieden werden.

katy

Antwort 4 von Computerfreaki vom 18.10.2020, 10:53 Options

Hallo katy,
vielen Dank für deine Mühe, deine Funktion funktioniert leider nur wenn alle Felder ausgefüllt sind.
Hier mal ein Link zu dem Notenrechner:
http://test.computerjan.de/notenrechner_javascript/notenrechner.html

Deine Funktion ist bei den Schulaufgaben schon eingebaut.
Ich hoffe du kannst mir weiterhelfen

Antwort 5 von katy vom 18.10.2020, 11:35 OptionsLösung

Lösung
Kopierfehler, es muss natürlich:
var sa1 =  parseInt("0"+document.getElementById('sa_1').value,10);
if (sa1>0) sazaehler++;
var sa2 =  parseInt("0"+document.getElementById('sa_2').value,10);
if (sa2>0) sazaehler++;
var sa3 =  parseInt("0"+document.getElementById('sa_3').value,10);
if (sa3>0) sazaehler++;
var sa4 =  parseInt("0"+document.getElementById('sa_4').value,10);
if (sa4>0) sazaehler++;


lauten.

Die anderen Funktionen solltest du auf das Fehlerabfangen bei parseInt anpassen.

katy

Antwort 6 von Computerfreaki vom 18.10.2020, 11:37 Options

Also bis jetzt funktioniert alles :-)
Vielen Dank für deine Hilfe

Gruß Computerfreaki

Ähnliche Themen

JavaScript aktivieren
Mickey  06.05.2008 - 2170 Hits -

Zeilen zählen
morpheus__85  28.06.2007 - 55 Hits - 1 Antwort

aktivierte ToggleButton zählen
Larrikin  02.07.2007 - 41 Hits - 2 Antworten

Anzahl der Listenpunkte per JavaScript zählen
Computerfreaki  13.09.2008 - 6 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026