我有一些变量
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);
});
答案 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);
});
它可以避免使用变量污染您的全局空间,并在它们相关时将它们保持在一起。