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()

我正在编写一些JavaScript代码,其中我使用了一个计数器的闭包。代码如下:

    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变量并创建全新的变量)吗?确保你已经完成了你的任务