动态变量增量

时间:2018-03-15 13:47:45

标签: javascript jquery variables increment

我有一些变量

var itemCount = 0;
var pageCount = 0;
var groupCount = 0;

除了这些变量之外,我还有三个按钮,其数据属性与这三个变量相匹配

<button type="button" data-toggle="modal" data-target="#activeQ" data-count="item">ITEM</button>
<button type="button" data-toggle="modal" data-target="#activeQ" data-count="page">PAGE</button>
<button type="button" data-toggle="modal" data-target="#activeQ" data-count="group">GROUP</button>

我想要做的是每次单击特定按钮时,它会递增该变量,例如。我单击ITEM按钮,itemCount添加1。

我认为我的功能正确,但是当我点击它时,计数不会递增(我也会在模式弹出窗口中显示其他信息)

$('#activeQ').on('show.bs.modal', function (event) {
    var button = $(event.relatedTarget);
    var aCat = button.data('count');
    var theCount = eval(aCat+"Count");
    theCount++;
    console.log(theCount);
});

2 个答案:

答案 0 :(得分:2)

您只需使用window['varName']即可访问变量:

$('#activeQ').on('show.bs.modal', function (event) {
    var button = $(event.relatedTarget);
    var aCat = button.data('count');
    window[aCat+"Count"]++;
    console.log(window[aCat+"Count"]);
});

答案 1 :(得分:2)

你根本不应该使用eval ..

执行此操作的最佳方法是将变量保存在对象中:

var counters = {
    item: 0,
    page: 0,
    group: 0
};
$('#activeQ').on('show.bs.modal', function (event) {
    var button = $(event.relatedTarget);
    var aCat = button.data('count');
    counters[aCat]++;
    console.log(counters);
});

它可以避免使用变量污染您的全局空间,并在它们相关时将它们保持在一起。