2016-04-11 6 views
1

Ich habe eine Geige here.Berechnen einer Bewertung mit N/A als Option

Ich versuche zu

  1. Berechnen eine durchschnittliche Bewertung basiert auf 2-6 Antworten (Antworten können sein: 0, 1, 2 oder NA und werden "1a", "1b", "1c", "2a" genannt, etc). Ich habe ein Skript, das die Bewertungen richtig berechnet, aber produziert "0" , wenn alle Antworten "NA" sind. Ich brauche den produzierten Durchschnittswert um auch "NA" zu sein, wenn alle Antworten "NA" sind.

    Dies ist der Code, den ich habe:

    var aField = new Array("1a", "1b", "1c") //create an array of the fields you need to check the value of 
    
    var aScore = new Array(); //creating an empty array for further use 
    
    var nScore = 0; //creating a variable holding the sum of the scores 
    for (var i = 0; i < aField.length; i++){ //looping through every item of array aField 
    
    if (this.getField(aField[i]).value >= 0){ //if our value is a number eliminating 0, nothing and NA 
    
         aScore.push(aField[i]); //we will count the number of correct values with this array; 
    
         nScore += Number(this.getField(aField[i]).value); // we add the value to our total 
    } 
    } 
    
    if (aScore.length >0){ //We don't want to divide our score by 0 because it's impossible 
    
    event.value = nScore/aScore.length; //we devide the result by the number of correct values in the array. 
    

    Jemand den folgenden Code vorgeschlagen, das Problem zu lösen, aber wenn ich es lief, erhielt ich eine

    „Syntax: fehlt, vor Aussage 12: bei Zeile 13 "

    Nachricht. (Nicht sicher, was das Problem ist, aber wenn jemand finden kann/beheben Sie den Code, sehr geschätzt).

    var allFieldsAreNA = true; 
    
    
    for (var i = 0; i < aField.length; i++){ 
    if (this.getField(aField[i]).value >= 0) { 
        allFieldsAreNA = false; 
        break; 
    } 
    } 
    
    
    If(allFieldsAreNA == false) { 
    
    // do the code you already have 
    
    } 
    else { 
    event.value = “NA”; // or something like that 
    } 
    
  2. Ich brauche ein Skript zu erhalten, die die durchschnittliche Bewertung nimmt und multipliziert sie mit verschiedenen "Weight Factors" (zB 0.15, 0.1, etc). Wenn der durchschnittliche rating ist eine Zahl, dann multipliziert sie einfach, wenn der Durchschnittswert Bewertung ist "NA" dann ist die "Weighted Rating" auch "NA".

  3. Ein Skript zur Summe aller "Weighted Ratings" und dividieren durch insgesamt "Weight Factors". Wenn alle Felder berechnet Zahlen sein, dann Gesamtgewicht Faktoren sind 1.0 oder 100% (.1, .15, .15, .1, .15, .25, .1) und insgesamt "Weighted Ratings" durch 1.0 geteilt gleich ... Wenn es eine gewichteten Bewertung, die NA ist, dann insgesamt "Weight Factors" sollte entsprechend berechnet werden (Weighted Bewertung der Kategorie 6 is NA, daher Weight Factors sollte nur .1 + .15 +.15 + .1 + .15 + .1 sein) und insgesamt "Weighted Ratings"/0.75.

Jede Hilfe, sehr geschätzt.

Antwort

0

Die zweite Charge des Codes im OP sollte identifizieren, ob alle Felder "NA" als Werte haben, und die allFieldsAreNA Variable auf true setzen, wenn dies der Fall ist. Es sieht so aus, als wäre das Problem im Code in dieser Zeile If(allFieldsAreNA == false) {. Die if-Anweisung ist groß geschrieben und sollte mit einem Kleinbuchstaben i beginnen.

Es sollte von hier aus ziemlich einfach sein, "NA" für die Berechnungen auszudrucken, die durchgeführt werden müssen.

Der dritte Teil der OP-Frage ist ein bisschen verwirrend. Es scheint ziemlich einfach zu berechnen, wenn die Variable allFieldsAreNA jedoch gefüllt ist.

Es gibt eine ähnliche Frage zu JS in einer PDF, die ich vor einiger Zeit beantworte. Der Code dort könnte auch als Referenz verwendet werden. Es macht ähnliche Berechnungen in einer Form.Count checkboxes in a form