Jquery多个元素的attr值之和

时间:2013-06-19 14:26:17

标签: jquery

我有这样的代码:

<a id="3" class="off area" name = "2" href="">Colchester</a>
<a id="1" class="off area" name = "1" href="">Leicester</a>
<a id="2" class="off area" name = "2" href="">London</a>
<a id="4" class="on area" name = "1" href="">Winchester</a>

对于具有“on”类的链接,我需要NAME属性的总和。 (即只有温彻斯特)。

$('.area .on').each(function() {
    alert(this.id);
    total += parseInt(this.id, 10);
});

我可以计算ID,但不能计算NAME属性。所以

total += parseInt(this.id, 10);

正在运作,但事实并非如此:

total += parseInt(this.attr('name'), 10);

4 个答案:

答案 0 :(得分:3)

试试这个:

total += parseInt(this.name, 10);

原因是attr用于jQuery对象,而不是直接用于this关键字。

你可以通过这样做来改善它:

total += parseInt(this.name, 10) || 0;

确保始终将数值作为总和。

答案 1 :(得分:2)

您正尝试在DOM元素上调用jQuery方法( this

你需要这个 -

total += parseInt(this.name, 10);

或者

total += parseInt($(this).attr('name'), 10);

演示-----> http://jsfiddle.net/dtt7u/

答案 2 :(得分:1)

你要么:

total += parseInt(this.name, 10);

或:

total += parseInt($(this).attr('name'), 10);

顺便说一下,console.log()使用alert()

答案 3 :(得分:1)

var sum = 0;
$('.area.on').each(function(index, elem) {
    sum += parseInt($(elem).attr('name'));
});

.area.on没有空间