Я пытаюсь добавить сумму дочерних элементов в родительский div, но не смог ограничить область математических операций дочерними элементами одного родителя.
Я начинаю с массива:
[
{
"item1-name": "item1",
"item1-price": "$100.00",
"item2-name": "item2",
"item2-price": "$200.00",
"item3-name": "item3",
"item3-price": "300.00",
"item4-name": "item4",
"item4-price": "$400.00",
"total": "$1,000.00"
},
{
"item1-name": "item1",
"item1-price": "$100.00",
"item2-name": "item2",
"item2-price": "$200.00",
"item3-name": "item3",
"item3-price": "300.00",
"item4-name": "",
"item4-price": "",
"total": "$0.00"
},
{
"item1-name": "item1",
"item1-price": "$100.00",
"item2-name": "item2",
"item2-price": "$200.00",
"item3-name": "",
"item3-price": "",
"item4-name": "",
"item4-price": "",
"total": "0"
}
]
Затем я записываю содержимое страницы в html с помощью javascript
function values(row){
return '<div class="container">' +
'<p>' + row["item1-name"] + '<span class="value cost">' +
row["item1-price"] + '</span></p>' +
'<p>' + row["item2-name"] + '<span class="value cost">' +
row["item2-price"] + '</span></p>' +
'<p>' + row["item3-name"] + '<span class="value cost">' +
row["item3-price"] + '</span></p>' +
'<p>' + row["item4-name"] + '<span class="value cost">' +
row["item4-price"] + '</span></p>' +
'<h4>Total' + '<span class="value total">' + row["total"] +
'</span></h4>' +
'</div>';
};
var containers = document.getElementsByClassName("container");
function findTotals(container){
$.each(containers, function(){
var sum = 0;
$(this).children(".cost").each(function() {
var val = $.trim( $(this).text() );
if ( val ) {
val = parseFloat( val.replace( /^\$/, "" ) );
sum += !isNaN( val ) ? val : 0;
}
});
alert(sum);
});
};
function buildRows(rows){
var allRows = "";
rows.forEach(function(row){
allRows = allRows + admitTemplate(row);
})
document.getElementById('rowHolder').innerHTML = allRows;
findTotals();
}
fetch('queryExport.json')
.then(response => {
if (response.ok){
return response.json()
} else {
return Promise.reject('something went wrong!')
}
})
.then(rows => {
buildRows(rows);
})
.catch(error => console.log('error is', error));
Проблема заключается в findTotalsфункция.Я хочу ограничить сумму значениями .cost внутри каждого div .container.(в настоящее время общее количество составляет 1900, когда итоговые значения равны 1000, 600, 300. (Все значения .cost на странице добавляются, когда я действительно пытаюсь перебрать по одному div .container за раз, выполняяфункция в рамках родительского (.container) div.
Вы можете увидеть, что итоги разбиты. Моей следующей целью будет сравнение сумм с итоговым значением. Если они не совпадают, я 'Выделите сломанное итоговое значение, чтобы его можно было исправить.
Спасибо за руководство.