Javascript Jquery将具有特定属性值的所有元素的值相加
我有一份简短的菜单:Javascript Jquery将具有特定属性值的所有元素的值相加,javascript,jquery,sum,Javascript,Jquery,Sum,我有一份简短的菜单: <ul> <li class="voucher"> Holidays (<span data="0" class="counter" id="119">0</span>) <ul id="menu2"> <li class="voucher"> Travel deals (<span data="119
<ul>
<li class="voucher">
Holidays (<span data="0" class="counter" id="119">0</span>)
<ul id="menu2">
<li class="voucher">
Travel deals (<span data="119" class="counter" id="123">1</span>)
</li>
<li class="voucher">
Hotel offers (<span data="119" class="counter" id="120">2</span>)
</li>
<li class="voucher">
Villas offers(<span data="119" class="counter" id="121">1</span>)
</li>
</ul>
</li>
</ul>
但是它不起作用。。没有错误,只是总和不正确,总是返回0
如果你对JS没问题,请帮帮忙
以下是JSFIDLE:
您试图在span对象中按数据属性查找。您需要使用:
parseInt($("span[data='" + id + "']").html());
还有其他问题需要解决。以下是完整的工作代码:
var sum = 0;
$('.counter').each(function () {
var counter = $(this).html();
var id = $(this).attr('id');
sum += parseInt($(this).html(), 10) || 0;
});
alert(sum);
$('.counter:eq(0)').html(sum);
尝试使用
.val()
或.text()
而不是.html()
afaolek html()返回空文本()返回“”/nothing。。我认为选择器不正确,或者我需要将()中的字符串转换为数字?是什么?你在用调试器吗?Chrome很乐意让您查看循环过程,以查看错误所在。您确实需要使用.text()而不是html,因为这将为您提供完整的span语句。不,我是Mozilla用户:)已经有一段时间没有使用它了,它必须有一个调试器,如果没有获得chrome的副本,您可以对其进行断点设置。更改后,它将返回1,而不是4。。请看这个提琴,我也把parseInt($($($[data='“+id+'”]).html()改为parseInt($($($($[data='“+id+']))).text()),现在不是求和,而是将所有值都放在()中为什么?我现在得到的不是假日,而是假日,恐怕我们理解错了:)你的演示说明了一些问题,但错了。。您有以下类别结构:•假日(4)◦旅游交易(1)◦酒店优惠(3)◦别墅提供(4),这意味着-必须是假日(8),而不是4@Europeuser:现在检查.Milind Anantwar是否正确:)this://$(this.html(sum);是原来的两倍这就是它返回错误金额的原因。。我接受了你的回答,非常感谢你的帮助,伙计@欧罗佩瑟:很高兴这有帮助。:)
var sum = 0;
$('.counter').each(function () {
var counter = $(this).html();
var id = $(this).attr('id');
sum += parseInt($(this).html(), 10) || 0;
});
alert(sum);
$('.counter:eq(0)').html(sum);