JavaScript递增变量

问题描述

| 我试图通过单击链接增加JavaScript中的变量,该变量第一次起作用,但是如果我单击一次,它将每隔3次出现一次,然后出现4次,5次,依此类推。 控制台的屏幕截图: 蓝色(右侧)中的数字与预期的一样,没有任何问题,但是正如您在左侧看到的那样,每一行都是一键单击。第一个日志很好,但随后它记录了1次3次,然后记录了10次4次。 这是完成工作的代码
$(\'.here\').live(\'click\',function(eve) {
    eve.preventDefault();

    var curpop = $(this).attr(\'rel\')
    ++curpop
    $(\'.pop\').html(curpop);

    console.log(curpop)
})
$(this).attr(\'rel\')
只是一个数字(在蓝色,右侧,图片中),一旦单击链接,即表示要增加该数字。 感谢您的帮助。 编辑:我已经在jsfiddle中设置了相同的内容,但是它似乎可以在其中工作,并且所有建议即使在应该的情况下也对我的项目无效。
<h4 class=\'left\'>Click
<a class=\"here\" href=\"#\" rel=\"1\">here</a></h4>
<h4 class=\'right\'>
    <span class=\'pop\'>
        1
    </span>
</h4>
这是html,现在有多个,但是是通过ajax加载的,我猜想这与该类的多个实例有关,没有标识符来分隔它们? 更多编辑 因为我怀疑问题出在“类的多个实例,没有标识符来分隔它们”,所以我只是使每个像这样:
<span id=\"<?PHP echo $thereID; ?>_span\" class=\'pop\'>
    1
</span>
然后
$(\'#\' + thereID + \'_span\').html(curpop);
谢谢你的帮助     

解决方法

        需要查看更多代码,但通常我会看到JS初学者将事件添加到事件内部。换句话说,每次单击链接时,都会添加另一个事件处理程序。 无论如何,这是在点击处理程序中增加计数器的示例:http://jsfiddle.net/GSuSk/     ,        
<a href=\"#\" id=\"link\">GO UP</a>
<p>0</p>
<script>
    $(\'#link\').click(function(){
            var v=$(\'p\').text();
            $(\'p\').text(+(v)+1);
    });
</script>
您为什么不尝试这种方法?在这里查看演示     ,        不确定使用的代码数量有限,但是如果我没记错的话,我认为一个问题是,该变量是在live中创建的,实际上应该在外部进行初始化,以便只需要捕获一次,然后从那里开始递增不必每次都抓住新的价值。这是我重新安排的方式。 http://jsfiddle.net/robx/nDbb8/1/     ,        
    <script type=\"text/javascript\">

    $(function(){

             $(\'.here li a\').click(function(){
                 var current =  parseInt($(this).attr(\'rel\'));
                 var inc = current + 1;
                 console.log(inc);
                 $(this).attr(\'rel\',inc);
                }); 
    });
    </script>

    <div >
    <ul class=\'here\'>
    <li><a href=\'#\' rel=\"1\">one</a></li>
    <li><a href=\'#\' rel=\"10\">two</a></li>
    <li><a href=\'#\' rel=\"37\">three</a></li>
    <li><a href=\'#\' rel=\"1\">four</a></li>

    </ul>

    </div>
我认为这里不需要活动功能...关键是使用parseInt强制将rel属性的当前值转换为字符串形式... :-)