具有相同类别的标签中的值的总和

时间:2016-05-24 19:28:57

标签: javascript jquery

我正在尝试添加类tmpcpa的所有值,并将结果放在final_cpa中,但final_cpa始终返回0

document.getElementById('cpa' + arr[0]).innerHTML = cpa + '(' + '<label id="tmpcpa">' + tmp_cpa + "</label>" +' For Final' + ')';
        var final_cpa =  calculate_final_cpa();
        console.log(final_cpa);


function calculate_final_cpa() {
    var final_cpa = 0;
    $('.tmpcpa').each(function () {
        if ($(this).val() != 0)
        final_cpa += parseInt($(this).text()) || 0;
    });
    return final_cpa;
}

令人惊讶的是,当我在浏览器中查看源代码时,HTML显示为

<label class="tmpcpa">0</label>但是当我检查元素时它显示为

<label class="tmpcpa">30.0</label>

这里更新是整个JS。 HTML调用process函数,最终调用calculate_final_cpa()

//"use strict";


function process(arr) {
    document.getElementById('txtgrade' + arr[0] + arr[1] + arr[2]).innerHTML = show_grade(document.getElementById('txtpercentage' + arr[0] + arr[1] + arr[2]).value);
    if (validateForm(arr)) {
        var module_percentage = +document.getElementById('txtpercentage' + arr[0] + arr[1] + arr[2]).value;
        var module_credit = +document.getElementById('txtcredit' + arr[0] + arr[1] + arr[2]).innerHTML;
        if (!isNaN(module_percentage) || !isNaN(module_credit)) {
            module_percentage = 0;
            module_credit = 0;
            var total_credit_semester = 0;
            var sum_module_percentage_x_credit = 0;
            for ( i= 2 ; i <= arr[3] + 1  ; i++) {
             module_percentage = +document.getElementById('txtpercentage' + arr[0] + arr[1] + i).value;
             module_credit = +document.getElementById('txtcredit' + arr[0] + arr[1] + i).innerHTML;
             sum_module_percentage_x_credit += module_percentage * module_credit;
                total_credit_semester +=  module_credit;
            }
            //console.log(module_percentage);
            var spa = sum_module_percentage_x_credit / total_credit_semester;
            spa = spa.toFixed(1);
            document.getElementById('spa' + arr[0] + arr[1]).innerHTML = spa;
            calculate_cpa(arr);
        }
    }
}


function validateForm(arr) {
    var isValid = true;
    var tbl_id = 'tbl_semester' + arr[0] + arr[1];
    $('#' + tbl_id + ' :input').each(function () {
        if ($(this).val() === '')
            isValid = false;
    });
    return isValid;
}

function calculate_final_cpa() {
    var final_cpa = 0;
    $('.tmpcpa').each(function () {
        if ($(this).val() != 0)
        final_cpa += parseInt($(this).text()) || 0;
    });
    return final_cpa;
}

/*
 * Works for  2 semester per level and 3 year course (optimize later)
 */

function calculate_cpa(arr) {
    var isValid = true;
    for ( i= 1 ; i <= 2   ; i++) {
        var spa = document.getElementById('spa' + arr[0] + i).innerHTML;
        if (spa == "N/A") {
            isValid = false;
        }
    }
    if (isValid) {
        var total_credit_level = 0;
        var total_spa_x_credit = 0;
        for ( i= 1 ; i <= 2   ; i++) {
          var arr2= [arr[0], i];
            var spa = +document.getElementById('spa' + arr[0] + i).innerHTML;
            total_spa_x_credit += spa * getcredits(arr2);
            total_credit_level += getcredits(arr2);
        }
        var cpa = total_spa_x_credit / total_credit_level;
        cpa = cpa.toFixed(1);
        document.getElementById('cpa' + arr[0]).innerHTML = cpa;
        var level = +document.getElementById('level' + arr[0]).innerHTML
        var tmp_cpa = ((level / 100) * cpa).toFixed(1);
        document.getElementById('cpa' + arr[0]).innerHTML = cpa + '(' + '<label class="tmpcpa">' + tmp_cpa + "</label>" +' For Final' + ')';
        var final_cpa =  calculate_final_cpa();
        console.log(final_cpa);
        if (final_cpa != 0) {
            var award = show_award(final_cpa);
            document.getElementById('award').innerHTML = award;
            document.getElementById('finalcpa').innerHTML = final_cpa;
        }


    }
}




function getcredits(arr) {
    var sum = 0;
    var tbl_id = 'tbl_semester' + arr[0] + arr[1];
    $('#' + tbl_id + ' .sum').each(function () {
        sum += parseInt($(this).text())||0;
    });
    return sum;
}



function show_grade(module_percentage) {
    if (isNaN(module_percentage)) {
        return 'N/A';
    }
    if (module_percentage >= 70 && module_percentage <= 100) {
        return 'A';
    } else if (module_percentage >= 60 && module_percentage < 70) {
        return 'B';
    } else if (module_percentage >= 50 && module_percentage < 60) {
        return 'C';
    } else if (module_percentage >= 40 && module_percentage < 50) {
        return 'D';
    } else {
        return 'F';
    }

}

function show_award(cpa) {
    if (isNaN(cpa)) {
        return 'N/A';
    }
    if (cpa >= 70 && cpa <= 100) {
        return 'First Class with Honours';
    } else if (cpa >= 60 && cpa < 70) {
        return 'Second Class First Division with Honours';
    } else if (cpa >= 50 && cpa < 60) {
        return 'Second Class Second Division with Honours';
    } else if (cpa >= 45 && cpa < 50) {
        return 'Third Class with Honours';
    } else  if (cpa >= 40 && cpa < 45)  {
        return 'Pass';
    } else if (cpa < 40) {
        return 'No award';
    }

}

1 个答案:

答案 0 :(得分:0)

您需要确保在文档准备好后调用该函数。 此外,您使用的是未分配的值。

</body>
<script>    
function calculate_final_cpa() {
        var final_cpa = 0;
        $('.tmpcpa').each(function () {
            if ($(this).val() != 0)
            final_cpa += parseInt($(this).text()) || 0;
        });
        return final_cpa;
    }

    $(document).ready(function(){
            var final_cpa =  calculate_final_cpa();
    document.getElementById('cpa' + arr[0]).innerHTML = cpa + '(' + '<label id="tmpcpa">' + final_cpa + "</label>" +' For Final' + ')';
            console.log(final_cpa);
    });
</script>