Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery将具有特定属性值的所有元素的值相加_Javascript_Jquery_Sum - Fatal编程技术网

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