Javascript 添加到全局变量的“If”语句
我试图根据用户完成的任务数量计算出用户的总体百分比。我似乎无法在运行函数时更新全局变量。如果任务设置为true,我希望它向变量中添加一个,如果为false,则减去一个 函数AOAClass1;每次单击待办事项列表中的项目时运行Javascript 添加到全局变量的“If”语句,javascript,Javascript,我试图根据用户完成的任务数量计算出用户的总体百分比。我似乎无法在运行函数时更新全局变量。如果任务设置为true,我希望它向变量中添加一个,如果为false,则减去一个 函数AOAClass1;每次单击待办事项列表中的项目时运行 var userProgress = 0; console.log("Users Progress: " + userProgress); //Detect task class change function AOAClass1() { var user =
var userProgress = 0;
console.log("Users Progress: " + userProgress);
//Detect task class change
function AOAClass1() {
var user = firebase.auth().currentUser;
var uid;
if (user != null) {
uid = user.uid;
}
if ($('#AOATask1').hasClass('checked')) {
//Set Task To false
var Ref = firebase.database().ref("Users/" + uid + '/Tasks');
Ref.child("AreasOfActivity").update({
userTask1: false,
});
var orginal = userProgress;
var userProgress = orginal - 1;
} else {
//Set Task To true
var Ref = firebase.database().ref("Users/" + uid + '/Tasks');
Ref.child("AreasOfActivity").update({
userTask1: true,
});
var orginal = userProgress;
var userProgress = orginal + 1;
}
}
提前感谢您的帮助或建议 访问变量时,不能写入它。写入var将在函数范围中创建一个新变量
在第22行和第35行,移除var
var userProgress = orginal - 1;
到
问题在于您使用var关键字重新定义变量: 省略它,它将使用全局值:
userProgress -= 1;
另一方面,这是主要的代码重复。您可以重构为:
var taskChecked = $('#AOATask1').hasClass('checked');
var Ref = firebase.database().ref("Users/" + uid + '/Tasks');
Ref.child("AreasOfActivity").update({
userTask1: !taskChecked,
});
userProgress = taskChecked ? userProgress - 1 : userProgress + 1;
从userProgress更新中删除var。您正在覆盖变量而不是更新它。谢谢,我已经做了修改,现在看起来更干净了。我不知道为什么,但当函数运行时,我的全局变量仍然没有更新?@ConnorRoberts可能还有其他原因。基于您在这里编写的代码和修复程序,它应该可以正常工作。
userProgress -= 1;
var taskChecked = $('#AOATask1').hasClass('checked');
var Ref = firebase.database().ref("Users/" + uid + '/Tasks');
Ref.child("AreasOfActivity").update({
userTask1: !taskChecked,
});
userProgress = taskChecked ? userProgress - 1 : userProgress + 1;