[英]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.