【发布时间】:2017-01-01 08:29:19
【问题描述】:
我的总成绩出现NaN 错误。有人可以帮我找出这个错误的原因吗?或者给我一些想法如何解决这个问题?我只是 javascript 和 web 开发的新手。对不起我的代码逻辑..
这是我的代码。
function Calculate(){
var term = $("#term").val();
var fac_code = $("#faculty_code").val();
$.ajax({
type: 'POST',
url: 'getrecords.php',
data: {
"done": 1,
"term": term,
"fac_code": fac_code
},
dataType: 'json',
success: function(data)
{
var major = data[3];
var quizzes = data[4];
var homework = data[5];
var attendance = data[6];
var laboratory = data[7];
var activity = data[8];
var recitation = data[9];
var q = +(document.getElementById('quiz').textContent);
var a = +(document.getElementById('atten').textContent);
var h = +(document.getElementById('home').textContent);
var r = +(document.getElementById('reci').textContent);
var m = +(document.getElementById('me').textContent);
var ac = +(document.getElementById('activityy').textContent);
var l = +(document.getElementById('laboratory').textContent);
var ma = $('.me');
var qui = $('.quize');
var homesea = $('.hos');
var re = $('.recits');
var laborat = $('.labo');
var activit = $('.activity');
var attenda = $('.atte');
var MisVisible = ma.is(':visible');
var QisVisible = qui.is(':visible');
var HisVisible = homesea.is(':visible');
var RisVisible = re.is(':visible');
var LisVisible = laborat.is(':visible');
var AisVisible = activit.is(':visible');
var ATisVisible = attenda.is(':visible');
var mt;
var qt;
var ht;
var rt;
var act;
var lt;
var att;
if (MisVisible === true) {
mt = m / 100 * 50 + 50;
}
if (QisVisible === true){
qt = q / 100 * 50 + 50;
}
if(HisVisible === true){
ht = h / 100 * 50 + 50;
}
if(RisVisible === true){
rt = r / 100 * 50 + 50;
}
if(LisVisible === true){
lt = l / 100 * 50 + 50;
}
if(AisVisible === true){
act = ac / 100 * 50 + 50;
}
if(ATisVisible === true){
att = a / 100 * 50 + 50;
}
mtt = mt * (major * 0.01);
qtt = qt * (quizzes * 0.01);
attt = att * (attendance * 0.01);
htt = ht * (homework * 0.01);
rtt = rt * (recitation * 0.01);
actt = act * (activity * 0.01);
ltt = lt * (laboratory * 0.01);
var grade = mtt + qtt + attt + htt + rtt + actt + ltt;
document.getElementById('td_grade').innerHTML = grade;
}
});
}
【问题讨论】:
-
Javascript 是严格类型的。来自 html 的东西可以是一个字符串。使用 parseInt 或 parseFloat 确保一定数量。
-
NaN 表示非数字,如果您获得所需的值,请务必检查所有变量。你可以使用 console.log(variable_name) 来观察你的变量。
-
@jomsk1e 先生,我应该把那个放在哪里?
-
你可以把它放在任何一行来检查你的变量的当前值,例如:mtt = mt * (major*0.01);console.log(mtt);并通过按 f12 并单击控制台选项卡来使用 chrome 的开发工具。
标签: javascript ajax