Javascript如何计算几个链接上的唯一点击次数

时间:2015-06-30 10:43:53

标签: javascript hyperlink count unique

例如,如果他们在页面上说10次唯一点击,我会使用此代码对每个代码点击一次:

function modify_qty(val) {
var qty = document.getElementById('qty').value;
var new_qty = parseInt(qty,10) + val;

if (new_qty < 0) {
    new_qty = 0;
}

document.getElementById('qty').value = new_qty;
return new_qty;
}

<a onClick="modify_qty(1)">link</a>

但问题是,如果我点击相同的链接,它会一次又一次地计算它。我想要的是,例如页面上有10个链接,最大计数为10,每个链接只能被点击一次。

2 个答案:

答案 0 :(得分:0)

您可以通过这种方式单击后禁用该按钮,您的每个唯一按钮只会被单击一次 因此,您将获得所需的输出。

或者,您可以在点击时将一个类指定给按钮(如果您不想禁用它)

答案 1 :(得分:0)

跟踪通过闭包变量单击的链接,并在单击链接时从函数返回。这也可以通过自动删除事件监听器来完成。

<a href="#" id="1" onClick="modify_qty(1, this.id)">link 1</a>
<a href="#" id="2" onClick="modify_qty(1, this.id)">link 2</a>
<a href="#" id="3" onClick="modify_qty(1, this.id)">link 3</a>
<a href="#" id="4" onClick="modify_qty(1, this.id)">link 4</a>
<a href="#" id="5" onClick="modify_qty(1, this.id)">link 5</a>


modify_qty = (function(){
    var clickedLinks = [];
    return function(val, linkId) {
        // check if link has been clicked    
        if(clickedLinks.indexOf(linkId) > -1){
            return;
        }
        // add link to clicked array and process
        clickedLinks.push(linkId);

        var qty = Math.floor(Math.random()*11);
        var new_qty = parseInt(qty,10) + val;

        if (new_qty < 0) {
            new_qty = 0;
        }

        lastVal = val;
        return new_qty;
    };
})();

演示小提琴:https://jsfiddle.net/4yorv72w/1/