Javascript闭包中的计数器不递增
我正在编写一些JavaScript代码,其中我使用了一个计数器的闭包。代码如下:Javascript闭包中的计数器不递增,javascript,jquery,Javascript,Jquery,我正在编写一些JavaScript代码,其中我使用了一个计数器的闭包。代码如下: function userHandler(){ var counter = 0; var limit = "<?php echo ($_SESSION['limit']); ?>"; return function(){ var args = { n : $('#name').val()
function userHandler(){
var counter = 0;
var limit = "<?php echo ($_SESSION['limit']); ?>";
return function(){
var args = {
n : $('#name').val(),
s : $('#ssn').val(),
i : $('#id').val()
};
$.post("adduser.php",args,function(data){
var response = JSON.parse(data);
console.log(args);
if(response.status == 0){
counter += 1;
alert(counter);
if (counter == limit){
$('#limit').text(limit-counter);
}
}
console.log(data);
});
};
}
var opcall = userHandler();
$('#addUser').on("click", opcall);
函数userHandler(){
var计数器=0;
var limit=“”;
返回函数(){
变量args={
n:$('#name').val(),
s:$('#ssn').val(),
i:$('#id').val()
};
$.post(“adduser.php”,参数,函数(数据){
var response=JSON.parse(数据);
console.log(args);
如果(response.status==0){
计数器+=1;
警报(计数器);
如果(计数器==限制){
$(“#限制”)。文本(限制计数器);
}
}
控制台日志(数据);
});
};
}
var opcall=userHandler();
$('#addUser')。在(“单击”,opcall);
我正在用它来写代码。问题是,我的计数器在警报框中总是显示1。它不会增加。我没有正确调用内部方法吗
编辑:HTML中有一个范围接收限制计数器值:
<p>
<span>Add User</span>
You can add <span id="limit"></span> more users. <a href='<?php echo $root; ?>editaccount.php?action=addOp'>Add another operator?</a>
</p>
添加用户
您可以添加更多用户。
每次我提交使用Javascript的表单时,它总是显示(20-1)=19
更新:谢谢你指出我的错误,在点击“addUser”按钮后,另一个页面打开并显示确认消息,其中必须点击一个链接才能返回到原始页面。我把确认信息移到了原来的页面,现在它可以正常工作了 您是否在某个时候将counter的值添加回DOM?如果是,在哪里看fine@atmd:如果单击一次
#addUser
,则仅此一次。如果单击两次,它将运行两次。什么是#addUser
?潜水艇?链接?啊哈。所以我真正的问题实际上是@Hacketo的问题:你确定这个按钮没有导致页面重新加载(从而破坏所有js变量并创建全新的变量)吗?确保您已经完成了准备工作,是否在某个时候将counter的值添加回DOM中?如果是,在哪里看fine@atmd:如果单击一次#addUser
,则仅此一次。如果单击两次,它将运行两次。什么是#addUser
?潜水艇?链接?啊哈。所以我真正的问题实际上是@Hacketo的问题:你确定这个按钮没有导致页面重新加载(从而破坏所有js变量并创建全新的变量)吗?确保你已经完成了你的任务