我想访问if()迭代器之外的变量

时间:2014-04-02 09:44:12

标签: javascript jquery

我想从if循环中获取if()中的当前值。

前: -

$('.name').each(function () {
    //name = this;
    temp = parseInt($('#slide_here').next().val());
    //console.log(temp)
    if (($(this).hasClass("1") == true)) {
        //console.log("you in1")
        //console.log(temp);
        if (temp > 10 && temp <= 20) {
            temp = temp + 10;
            //console.log(temp);
            //Agriculture.push(10);
        } else {
            temp = temp + 5;
            //console.log(temp);
            //Agriculture.push(5);
        }
        //return temp;
        console.log(temp);
    }
    if (($(this).hasClass("2") == true)) {
        console.log("you in2")
        if (temp > 10 && temp <= 20) {
            console.log(temp);
            temp = temp + 10;
            //Industry.push(10);
        } else {
            temp = temp + 5;
            //Industry.push(5);
        }
        //return temp;
    }
在迭代if循环时,应将

值添加到temp中。我想在执行all if语句后将最终值作为总加法。 示例

最初

温度= 13 在第一个if循环中 温度= 23 我希望这个23值用于下一个if语句。我尝试了但是我只获得了13个值。

3 个答案:

答案 0 :(得分:0)

将您的作业移到外部以获取全局变量。在您的代码中,当值大于20时,它不会输入if语句。为了进入第二个if,我已更新条件以查看全局变量与上次更新保持相同的值;

var temp = parseInt($('#slide_here').next().val());

$('.name').each(function () {
            //name = this;



            //console.log(temp)

            if (($(this).hasClass("1") == true)) {

                //console.log("you in1")
                //console.log(temp);
                if (temp > 10 && temp <= 20) {
                    temp = temp + 10;
                    //console.log(temp);
                    //Agriculture.push(10);
                } else {
                    temp = temp + 5;
                    //console.log(temp);
                    //Agriculture.push(5);
                }
                //return temp;
                console.log(temp);

            }

            if (($(this).hasClass("2") == true)) {

                console.log("you in2")
                if (temp > 10 && temp <= 20) {
                    console.log(temp);
                    temp = temp + 10;
                    //Industry.push(10);
                } else {
                    temp = temp + 5;
                    //Industry.push(5);
                }
                //return temp;
            }

您可以在此处查看演示: jsfiddle

答案 1 :(得分:0)

这似乎是正确的。我看到的唯一问题是你检查temp是否小于21,但它现在是23,所以它不会进入最后一个if。添加一些警报以进行调试。这对我来说很好:               

        $('.name').each(function ()
        {
            //name = this;
            temp = 13;
            alert("begins with" + temp);
            //console.log(temp)

            if (($(this).hasClass("1") == true))
            {
                //console.log("you in1")
                //console.log(temp);
                if (temp > 10 && temp <= 20)
                {
                    temp = temp + 10;
                    alert("temp modified to: " + temp);
                    //console.log(temp);
                    //Agriculture.push(10);
                }
                else
                {
                    temp = temp + 5;
                    //console.log(temp);
                    //Agriculture.push(5);
                }
                //return temp;
                console.log(temp);
                alert("in first if: " + temp);
            }

            if (($(this).hasClass("2") == true))
            {
                console.log("you in2")
                if (temp > 10 && temp <= 20)
                {
                    console.log(temp);
                    alert("current value should match the previous alert: " + temp);
                    temp = temp + 10;
                    //Industry.push(10);
                }
                else
                {
                    temp = temp + 5;
                    //Industry.push(5);
                }
                alert("in second if: " + temp);
                //return temp;
            }
        });
</script>

答案 2 :(得分:0)

if语句不是循环 - 它们执行一次(取决于条件是否为真)并且没有迭代。

代码中的循环实际上是对此行中jQuery each的调用:

$('.name').each(function () {

如果希望在循环中更新temp的值而不为具有类name的每个元素重置,则可能需要将temp变量的声明移到外部循环:

var temp = parseInt($('#slide_here').next().val());

$('.name').each(function () {
    if (($(this).hasClass("1") == true)) {
        // ... do logic and update temp
    }
    if (($(this).hasClass("2") == true)) {
        // ... do logic and update temp
    }
}

// use final temp value