我有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>
答案 0 :(得分:1)
是的,我希望当其中一个句点或区域更改值
时,会自动更新finalFilter
实现这一目标的唯一方法是实际更新它。 JavaScript中的变量不会根据您第一次设置它们时使用的表达式自动更新。后:
var finalFilter = "data-" + region + "-" + period;
已经投放,finalFilter
纯粹设为"data-ww-ltd"
- 它不知道或链接到region
或period
。
因此,在致电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
本地作用于该功能。