我正在尝试对通过JSON从外部源收集的数据执行简单的添加。我得到的数据是作为字符串返回但是是一个数字,所以我尝试使用parseInt()和Number()无济于事。我在下面展示了一段简单的代码:
var total_energy = 0;
var energy_val;
$.each(result.report.food.nutrients, function (i, v) {
if (v.name == "Energy"){
energy_val = v.value;
var energy = Number(energy_val);
total_energy = total_energy + energy;
console.log("energy " + energy);
console.log("totalenergy " + total_energy);
energy_val = "";
energy = 0;
}
}
控制台每次都返回正确的能量值,但总能量值似乎与能量值保持一致。总和似乎没有任何影响。谁能告诉我这个问题我哪里出错了?
答案 0 :(得分:2)
将console.log("energy " + total_energy);
更改为console.log("energy " + energy);
答案 1 :(得分:0)
尝试parseInt你的值......可以是这个
答案 2 :(得分:0)
我怀疑它是否由于在循环中创建的闭包而在迭代项目。请尝试以下代码。
var total_energy = 0;
var energy_val;
$.each(result.report.food.nutrients, function (i, v) {
var item = v;
//Calling calculateEnergy() function so that each 'item' is the current instance 'v' value.
(function calculateEnergy(itemClicked))(item);
}
function calculateEnergy(itemClicked){
if(itemClicked.name == "Energy"){
energy_val = itemClicked.value;
var energy = Number(energy_val);
total_energy = total_energy + energy;
console.log("energy " + energy);
console.log("totalenergy " + total_energy);
energy_val = "";
energy = 0;
}
}
我已在评论中添加了评论。
更新 console.log()是ajax请求的错误。因此,不要记录,而是尝试创建一个html div并在那里填充值。