gpt4 book ai didi

javascript - 计算点击的复选框,即使在刷新后

转载 作者:行者123 更新时间:2023-11-30 10:00:28 25 4
gpt4 key购买 nike

我试图记录复选框在我的网站上被点击了多少次,这些复选框用于过滤器(男性、女性、年龄等)。目前我有这段代码

jQuery('[id^="checkbox"] input').each(
function (index, element) {
jQuery(this).click(
function () {
console.debug("Hello");
}
);
}
);

这将计算(在控制台中)复选框被点击的次数(id 以复选框开头),但由于页面在每次点击时刷新信息(和 url),它只会计算第一次点击, 其余不计入。页面刷新后是否还要继续计数?谢谢

最佳答案

要对所有用户选中的所有复选框进行持久计数,您需要有一个中央总数,所有计数都会更新。对于甚至像 YouTube 这样的大型网站来说,这将是相当棘手的(尽管程度较轻)。

我不知道这可以完全在 JS 中完成(如果有人知道,请编辑此答案)并且您可能需要某种后端代码。

您可以采取的一种方法是:

  1. 在点击时更新本地选中复选框的总数
  2. 设置点击时 1/2 秒的计时器
  3. 一旦计时器结束,向后端页面发送ajax请求
  4. 后台页面接收更新,更新中央总计

您还可以采用许多其他方法。您可能会遇到这样的问题,例如,中央总数可能不是很准确(如果 ajax 请求被中断),并且由于 ajax 请求,您的带宽使用量增加。


Gennady Dogaev分享了一些非常好的代码,它发布了复选框的 id,它对另一个页面很有值(value)。此页面可能具有更新数据库或类似跟踪正在使用的复选框的逻辑。

<body>
<input type="checkbox" id="check_1" /> 1
<input type="checkbox" id="check_2" /> 2
<input type="checkbox" id="check_3" /> 3
</body>


$(function(){
$("input[type=checkbox]").click(function(){
var box = $(this);
var data = {
id: box.prop('id'),
checked: box.is(':checked')
};
$.get('https://stackoverflow.com/', data).always(function(response){
console.log('server responded', response);
/*Click registered, do what you want here*/
});
});
});

https://jsfiddle.net/nrLpxLuf/


下面的答案是为了帮助计算页面上所有选中的复选框并在本地更新总数。我把它留在这里以供引用。

You don't need to loop over all elements to attach a single click event to all of them.

Instead attach a click event to a collection of checkboxes and then update a total variable from within the click function.

var $inputs = $('[id^="checkbox"] input');
var total = $inputs.filter(':checked').length; //this will be 0 if none are found

$inputs.on('click', function(event) {
if($(this).is(':checked')) {
total++;
} else {
total--;
}

console.log(total);
});

If you only want to see if it has been clicked, just add to the total.

关于javascript - 计算点击的复选框,即使在刷新后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com