繁体   English   中英

JavaScript 递增变量

[英]JavaScript incrementing a variable

我试图通过单击一个链接来增加 JavaScript 中的一个变量,它第一次工作,但如果我点击它每隔一次就会显示 3 次,然后是 4、5 等等。 控制台截图:在此处输入图像描述

蓝色(右)中的数字与预期一致,这没有任何问题,但正如您在左侧看到的那样,每一行都是一次单击。 第一个日志很好,但是它记录了 1 三次,然后 10 记录了四次。

这是做这项工作的代码。

$('.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 加载,我猜它与 class 的多个实例有关,没有标识符来分隔它们?

更多编辑因为我怀疑问题出在“没有标识符来分隔它们的 class 的多个实例”所以我只是让每个实例都像这样:

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

我认为您在这里不需要实时 function ...关键是使用 parseInt 将 rel 属性的当前值转换为字符串... :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM