我试图获得一组数字的总组合值。 我将数字作为元素标记中的文本存储在一个数组中然后将它们全部添加在一起。我的问题是它没有将数字作为对插入到数组中..它将它们作为单个整数添加。我做错了什么。 检查jsfiddle也见示例
var z = $('.impressions').text();
var x = [];
for(var i = 0; i < z.length; i++){
x.push(parseInt(z[i]));
}
console.log(x);
var total = 0;
$.each(x,function() {
total += this;
});
$('#impressTotals').append("[Total:" +total + "]");
$('#array').append("[Array:"+x+"]");
答案 0 :(得分:4)
当你获得文本时,它会获取所有数字并将它们连接成一个字符串。下面每个元素一次一个地推送它。
var x = [];
$('.impressions').each( function( ) {
var z = $(this).text();
x.push(parseInt(z, 10));
})
当然,您可以在each
函数内部构建总结,但我这样做是为了更接近您的代码镜像。
答案 1 :(得分:1)
text()
会返回所有展示元素的连接文字,您可以将每个字符添加到一起。
您希望遍历每个展示次数元素,并保持运行总和。这样的事情应该有效
var sum = 0;
$('.impressions').each(function(){
sum = sum + (+$(this).text());
});
或保留原始结构(不要忘记parseInt的radix参数):
var z = $('.impressions');
var x = [];
z.each(function(){
x.push(parseInt($(this).text(), 10));
});
console.log(x);
var total = 0;
$.each(x,function() {
total += this;
});
$('#impressTotals').append("[Total:" +total + "]");
$('#array').append("[Array:"+x+"]");
答案 2 :(得分:0)
您正在迭代字符串,如果需要,可以使用$.map
来构建数组,否则只需迭代并总结值:
var x = $.map($('.impressions'), function(el,i) {return parseInt($(el).text(), 10);}),
total = 0,
n = x.length;
while(n--) total += x[n] || 0;
$('#impressTotals').append("[Total:" +total + "]");
$('#array').append("[Array:"+x+"]");