如何在不同的计数器中控制一个变量

时间:2016-04-07 16:36:44

标签: javascript html variables counter

我设计了一个计数器,每个都有3个按钮(向上,向下和移除计数器)。我可以添加计数器。每个新的计数器工作得很好,但其他计数器继续从新计数器计数。我想我应该创建数组n,对于n(i)我们应该有数(i)?如果是真的那么我怎么做呢?

我该如何解决?

    var up = document.getElementsByClassName("up");
    var n = 0;
    for (i = 0; i < up.length; i++) {
        up[i].addEventListener("click", function (){
            var input = this.parentElement.getElementsByClassName("input");
                    n++;
                    input[0].innerHTML = parseInt( input[0].innerHTML ) + 1;
        });
    };


    <button class="up">up</button>
    <div class="input">0</div>

1 个答案:

答案 0 :(得分:0)

您要将事件监听器添加到每个&#39; up&#39;并且&#39; down&#39;每次运行upDownCounter()

时都会生成元素

因此,页面上的第一个计数器每次都会获得单击侦听器 - 如果在事件侦听器中添加console.log(),则会看到它为旧计数器运行多次。

up[i].addEventListener("click", function (){
    console.log('up click'
    ...
});

如果您有3个计数器,请点击&#39;向上&#39;在第一个将记录&#34;向上点击&#34; 3次,第二次将记录两次,最新1次,因为它只会添加一次事件监听器。

另外,我认为你的var范围是关闭的,你的n变量对所有计数器都是通用的,它需要在click处理程序中声明。 你可以改用它:

input[0].innerHTML = parseInt( input[0].innerHTML ) + 1;

代码可以通过一些重构来实现,它会重复很多并且有点难以理解。