为什么我一直在这里定义?

时间:2015-12-15 20:07:43

标签: javascript

total_1不断恢复未定义。我究竟做错了什么?如果总数的除数大于它,我想总计加10,如果不是我只想加5,其他的都很好,只有未定义的总数为1。

function findMark (){
     var x1 = document.getElementById("fn").value;
     var x2 = document.getElementById("ln").value;
     var grade1 = parseFloat(document.getElementById("midterm").value*0.35);
     var grade2 = parseFloat(document.getElementById("assign").value*0.1);
     var grade3 = parseFloat(document.getElementById("quiz").value*0.15);
     var grade4 = parseFloat(document.getElementById("final").value*0.4);
     var total = Math.round(grade1 + grade2 + grade3 + grade4);
     var total_1 = findFinalMark(total);
     document.getElementById("outputDiv").innerHTML = "Name = " + x1 + " " + x2 + "<br>" + "Your mark is = " + total + "%" + "<br>" + "Your Final Mark = " + total_1 + "%";

     function findFinalMark (x) {
     sum = 0;
     i = 1;
     while (i < x){
        if (x % i == 0){
            sum += i;
        }
        i++;
     }
     if (sum > x) {
        x = x + 10;
     }
     else {
        x = x + 5;
     }
    }
}

2 个答案:

答案 0 :(得分:1)

这很简单:

您不会从函数返回任何内容,因此未定义。

因此您需要从函数返回xsum。在声明变量时也使用var,这样就不会泛滥全局命名空间。

function findFinalMark (x) {
    var sum = 0,
        i = 1;
    /* your logic */
    return x; //or sum or whatever you want
}

答案 1 :(得分:0)

你的函数findFinalMark应该返回总和吗?