例如,如果他们在页面上说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,每个链接只能被点击一次。
答案 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;
};
})();