代码之家  ›  专栏  ›  技术社区  ›  Murphy1976

动态变量增量

  •  0
  • Murphy1976  · 技术社区  · 7 年前

    我有几个变量

    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 回复  |  直到 7 年前
        1
  •  2
  •   Zenoo    7 年前

    您可以简单地使用 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"]);
    });
    
        2
  •  2
  •   Oscar Paz    7 年前

    你不应该使用 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);
    });
    

    它避免了变量污染您的全局空间,并将它们保持在一起,因为它们是相关的。