将值存储在switch语句中的if语句的变量中

时间:2016-09-01 07:20:50

标签: javascript angularjs if-statement switch-statement

我希望在每个switch语句的情况下都有一个变量跟踪if语句的结果。问题是每次我的情况使用变量的初始值 - 0,而不是前一种情况给出的值,所以我总是得到myNum = 1。我想知道这个问题的常见解决方案是什么。

我还尝试使用数组var myArray = [false,false,false,false];,其中案例1更改myArray[0] = true,当案例2中的if语句返回true时,它会更改myArray[1] = true,但是整个数组现在是[false,true,false,false],即来自案例1的更改不会保存在变量中,而是使用初始变量值。

如果我在switch语句之外将值记录到控制台,则两种情况都是相同的。

$scope.clickItem = function(result){
var myNum = 0;
function addNum() {
  myNum++;
};

switch(currentString) {
    case string1:
    if($scope.img1 === result){
         addNum();
         console.log('myNum is ' + myNum); // <- It's 1
         $scope.currentString = $scope.val2;
     }
     else{
         console.log("Wrong..");
     }
    break;

    case $scope.val2:
    if($scope.img2 === result){
        addNum();
        console.log('myNum is ' + myNum); // <- It's 1 again, when it should be 2.
        $scope.currentString = $scope.val3;
     }
     else{
         console.log("Wrong..");
     }
    break;

    case $scope.val3:
    if($scope.img3 === result){
         addNum();
         $scope.currentString = $scope.val4;
     }
     else{
    console.log("Wrong..");
}
break;
}
...etc

1 个答案:

答案 0 :(得分:0)

每次调用myNum函数时,clickItem变量都设置为0。它无法超过1。

您应该做的是以$scope这样设置一个全局变量:

$scope.myNum = 0;
$scope.clickItem = function(result){
    function addNum() {
        $scope.myNum++;
    };
    ...
};

不要忘记更改记录结果的方式:

console.log("myNum is" + $scope.myNum);