同じIDだけど違う場所にある数値を、それぞれ合計して表示する。
sample
See the Pen 配列を作って、合計を別の場所に表示する by takapen (@takapen) on CodePen.
html
testtesttest12100
jQuery
$(function(){
function isItemNumSum(){
var arr = [];
var arrNum = [];
$('.bbb').each(function() {
var itemId = $(this).data('itemid');
var arrNum = $(this).find('span').map(function(){//配列に入れる
return Number( $(this).text() );//Numberでテキストを数に変換
}).get();
//reduceで配列を合計しようとしたらエラーになってしまって解消の仕方がわからなかったので、下記forEachで合計した
//var sum = arr.reduce((a,x) => a+=x);//配列から合計数を出す(エラーになってしまった)
//bbbの中のspanの数を合計する処理
var sumFn = function(arr) {
var sum = 0;
arr.forEach(function(elm) {
sum += elm;
});
return sum;
};
arr.push( {id : itemId, num : sumFn(arrNum)} );//配列に追加
});
for(i in arr){//bbbで作った配列をまわす
$('.aaa').each(function(){
if($(this).data('itemid') == arr[i].id){//同じIDの時にbbbのspanの合計値を入れる
if(arr[i].num != '0'){
$(this).find('.sum').text(arr[i].num);
$(this).find('.sum').show();
} else {
$(this).find('.sum').hide();//0の時は非表示
}
}
});
}
if( $('.sum').text() == '0' ){
$('.sum').css('display','none');
}
}isItemNumSum();//実行
});