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

Einfache Summen/If-Funktion in PDF (Anfängerfrage)

DaNylz

New member
Hallo Zusammen!

Ich habe ein PDF erstellt mit mehreren Multiple-Choice-Fragen.
Es gibt 6 Antwortalternativen:
1 bis 5 als Wertung und 0 als "keine Angabe".

Nun habe ich fünf dieser MC-Gruppen, A1, A2, A3, A4 und A5.
Ich möchte in einem weiteren Feld die Anzahl unter diesen 5 berechnen lassen,
die auf der Option "0" stehen.

Ich bin absoluter Neuling was JS angeht, habe aber in anderen bereichen schon einiges an Erfahrung, bin nur eben mir JS selbst gar nicht vertraut.

Daher habe ich versucht aus Beispielen im Internet etwas zu basteln und bin nicht weiter gekommen.

Hier mein Versuch für das Berechnungsfeld, vermutlich grundfalsch:

Code:
var a1 = this.getField(a1).value;
var a2 = this.getField(a2).value;
var a3 = this.getField(a3).value;
var a4 = this.getField(a4).value;
var a5 = this.getField(a5).value;

var missa = 0;

if(a1 = 0) missa = missa +1;
if(a2 = 0) missa = missa +1;
if(a3 = 0) missa = missa +1;
if(a4 = 0) missa = missa +1;
if(a5 = 0) missa = missa +1;


event.value = missa;

Im Voraus schonmal danke!
 
Zuletzt bearbeitet:
Hi,

wo hängt es denn? Dein Code ist soweit schon mal in Ordnung, bis auf die If-Abfragen. Die IST-Vergleiche sind hier falsch, diese müssten so lauten: if (a1 == 0) {...}

P.S.: Sinnvoll ist das sowieso nicht. Bei allen Ifs wird das gleiche gemacht, soll das so sein?
 
Hi,

wo hängt es denn? Dein Code ist soweit schon mal in Ordnung, bis auf die If-Abfragen.

P.S.: Sinnvoll ist das sowieso nicht. Bei allen Ifs wird das gleiche gemacht, soll das so sein?

Ich habe hier mir mehreren ifs anstatt if event1 oder event2 etc.
gearbeitet weil ich mit der syntax null vertraut bin.

Das Problem ist, dass ich möchte, dass dieses Feld für das ich das Skript als Berechnung eintrage, die Variable missa am ende anzeigt. D.h. wenn ich dann A1, A2 usw. auf Null setze, in diesem Feld jeweils +1 passiert.
Ist das mit event.value richtig?

Hier mal ein anderer Versuch:

Code:
var a1 = this.getField(a1).value;
var a2 = this.getField(a2).value;
var a3 = this.getField(a3).value;
var a4 = this.getField(a4).value;
var a5 = this.getField(a5).value;




if(a1 == 0) {var za1 = 1};
if(a2 == 0) {var za2 = 1};
if(a3 == 0) {var za3 = 1};
if(a4 == 0) {var za4 = 1};
if(a5 == 0) {var za5 = 1};

var missa = za1 + za2 + za3 + za4 + za5;

event.value = missa;

Wenn das Feld a1 = 0 ist, wird za1 = 1 gesetzt.
Diese za1 - za5 summiert ergeben dann die Anzahl der Fehler die Null sind.
Aber wiederrum: wie kriege ich diese summenvariable missa dann in meinem Feld angezeigt?
 
Zuletzt bearbeitet:
habs rausgefunden:

Code:
var a1 = this.getField("A1").value;
var a2 = this.getField("A2").value;
var a3 = this.getField("A3").value;
var a4 = this.getField("A4").value;
var a5 = this.getField("A5").value;

var a1n = 0;
var a2n = 0;
var a3n = 0;
var a4n = 0;
var a5n = 0;


if( a1 > 0) a1n = 1;
if( a2 > 0) a2n = 1;
if( a3 > 0) a3n = 1;
if( a4 > 0) a4n = 1;
if( a5 > 0) a5n = 1;




event.value = (a1 + a2 + a3 + a4 + a5)/(a1n + a2n + a3n + a4n + a5n);
 
habs rausgefunden:

Code:
var a1 = this.getField("A1").value;
var a2 = this.getField("A2").value;
var a3 = this.getField("A3").value;
var a4 = this.getField("A4").value;
var a5 = this.getField("A5").value;

var a1n = 0;
var a2n = 0;
var a3n = 0;
var a4n = 0;
var a5n = 0;


if( a1 > 0) a1n = 1;
if( a2 > 0) a2n = 1;
if( a3 > 0) a3n = 1;
if( a4 > 0) a4n = 1;
if( a5 > 0) a5n = 1;




event.value = (a1 + a2 + a3 + a4 + a5)/(a1n + a2n + a3n + a4n + a5n);
das ganze geht VIEL einfacher und universaler:
Code:
var aX = 0;
var aXn = 0;

for(var i = 1; i < 6; ++i){
	aX += i;
	aXn += ((this.getField("A"+i).value > 0) ? 1 : 0);
}

event.value = aX/aXn;
 
@teddy: dein Code rechnet nicht genau das gleiche aus...

Code:
var aX = 0;
var aXn = 0;

for(var i = 1; i <= 5; i += 1){
	var value = this.getField("A" + i).value;
	aX += value;
	if (value > 0){
		aXn += 1;
	}
}

event.value = aX/aXn;

@DaNylz: Du teilst durch 0 wenn keines der Felder größer als 0 ist... diesen Fall solltest du eventuell separat abfangen.
 
Zurück
Oben