Насколько я могу судить, код нормально работает, но когда добавляется или редактируется дополнительная информация, оператор if else начинает вести себя странно. Он правильно читает процентное значение, но не возвращает правильную буквенную строку.
var total = function (){
var earned = 0;
for(i = 0; i < Assignments.length; i++){
earned += parseInt(Assignments[i].earned);
}
var possible = 0;
for(i = 0; i < Assignments.length; i++){
possible += parseInt(Assignments[i].possible);
}
var percent = (Math.floor((earned/possible) * 100));
console.log(percent);
//grade letter
if (percent >= 90){
grade.innerHTML = '';
grade.innerHTML = 'A ' + percent + '%';
} else if (percent <= 89 && 80 >= percent){
grade.innerHTML = '';
grade.innerHTML = 'B ' + percent + '%';
} else if (percent <= 79 && 70 >= percent){
grade.innerHTML = '';
grade.innerHTML = 'C ' + percent + '%';
} else if (percent <= 69 && 60 >= percent){
grade.innerHTML = '';
grade.innerHTML = 'D ' + percent + '%';
} else if(percent <= 59 && 0 >= percent){
grade.innerHTML = '';
grade.innerHTML = 'F ' + percent + '%';
} else {grade.innerHTML = '';}
};
После нескольких вводов он вернет что-то вроде этого:
Я думаю, что это может быть конфликтующие операторы else if, но, честно говоря, я понятия не имею, почему это так себя ведет.
switch(percent)
не будет работать, когдаpercent
равно 0 (должно бытьswitch(true)
). И я бы не назвал это работой переключателя, когда вы взломаете его таким образом. Есть лучшие способы проверки диапазона чисел, чем цепочки else-if, но переключатель не входит в их число. - person JJJ   schedule 08.12.2014switch
в JavaScript (stackoverflow.com/a/17145931/ 157247, см. №3), это просто многословныйelse if
. - person T.J. Crowder   schedule 08.12.2014