从函数更新全局变量

时间:2016-03-11 12:06:06

标签: javascript jquery

我有2个变量连接成另一个变量。在单击按钮时,变量的值应该更新,并且连接变量,但全局变量保持原始值。

<button class="filter period" data-sort-value="number" data-period="ltd">LTD</button>
<button class="filter period" data-sort-value="number" data-period="r3">R+3</button>
<button class="filter period" data-sort-value="number" data-period="r12">R+12</button>
<button class="filter period" data-sort-value="number" data-period="rtodec">RTODEC</button>
<script>

    var region = "ww";
    var period = "ltd";

    var finalFilter = "data-" + region + "-" + period;

    $('button.filter').on('click', function () {

        if ( $(this).hasClass("period") ) {

            period = $(this).attr('data-period');
            console.log(finalFilter);
            console.log(period);
            updatedFinalFilter();
        }

    });
</script>

1 个答案:

答案 0 :(得分:1)

  

是的,我希望当其中一个句点或区域更改值

时,会自动更新finalFilter

实现这一目标的唯一方法是实际更新它。 JavaScript中的变量不会根据您第一次设置它们时使用的表达式自动更新。后:

var finalFilter = "data-" + region + "-" + period;

已经投放,finalFilter纯粹设为"data-ww-ltd" - 它不知道或链接到regionperiod

因此,在致电updatedFinalFilter()之前,您必须重新评估表达式:

var region = "ww";
var period = "ltd";

var finalFilter = "data-" + region + "-" + period;

$('button.filter').on('click', function () {

    if ( $(this).hasClass("period") ) {

        period = $(this).attr('data-period');

        finalFilter = "data-" + region + "-" + period;

        console.log(finalFilter);
        console.log(period);
        updatedFinalFilter();
    }

});

请注意,当我们在函数中更新时,var不足 - 您不想在那里重新声明它,否则它将变成不同的 finalFilter本地作用于该功能。