Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加到全局变量的“If”语句_Javascript - Fatal编程技术网

Javascript 添加到全局变量的“If”语句

Javascript 添加到全局变量的“If”语句,javascript,Javascript,我试图根据用户完成的任务数量计算出用户的总体百分比。我似乎无法在运行函数时更新全局变量。如果任务设置为true,我希望它向变量中添加一个,如果为false,则减去一个 函数AOAClass1;每次单击待办事项列表中的项目时运行 var userProgress = 0; console.log("Users Progress: " + userProgress); //Detect task class change function AOAClass1() { var user =

我试图根据用户完成的任务数量计算出用户的总体百分比。我似乎无法在运行函数时更新全局变量。如果任务设置为true,我希望它向变量中添加一个,如果为false,则减去一个

函数AOAClass1;每次单击待办事项列表中的项目时运行

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;