大家好!有一个动态表,您可以在其中添加任意数量的字段并计算每个字段的总和。我是javascript新手,所以当然我没有足够的经验,我对如何解决这个问题的想法倾向于循环,或者如何将每次迭代的总和写入数组然后输出每个迭代的总和一对数字。任务是计算所有可能输入字段的总和 Number[1] + Number[2],即 如果添加了 10 个动态字段,则响应应该有 10 个带有金额的字段。
如果您能告诉我为了解决这个问题应该朝着哪个方向前进,我将不胜感激。
var d = document;
var last_id = 0;
function add_value_f() {
// находим нужную таблицу
var tbody = d.getElementById('table').getElementsByTagName('tbody')[0];
// создаем строку таблицы и добавляем ее
var row = d.createElement("tr");
tbody.appendChild(row);
// создаем ячейки в вышесозданной строке
var td1 = d.createElement("td");
var td2 = d.createElement("td");
row.appendChild(td1);
row.appendChild(td2);
last_id = last_id + 1;
// добавляем формы ввода в ячейки
td1.innerHTML = '<input type="number" min="0" id="chislo[' + last_id + ']" class="data">';
td2.innerHTML = '<input type="number" min="0" id="chislo2[' + last_id + ']" class="data">';
};
function totalSum() {
var num1 = document.getElementById('chislo[' + last_id + ']').value;
var num1p = parseInt(num1);
if (isNaN(num1p)) {
num1p = 0;
}
var num2 = document.getElementById('chislo2[' + last_id + ']').value;
var num2p = parseInt(num2);
if (isNaN(num2p)) {
num2p = 0;
}
var sum;
sum = num1p + num2p;
out.innerHTML = " " + sum + "<br>";
}
<div class="stats-tab">
<h1> Таблица</h1>
<table id="table">
<thead>
<tr>
<th class="data">Число 1</th>
<th class="data">Число 2</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="number" id="chislo[0]" min="0" class="data"></td>
<td><input type="number" id="chislo2[0]" min="0" class="data"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-12">
<input type="button" onclick="add_value_f()" value="Добавить" />
</div>
</div>
<button onclick="totalSum()">=</button>
<hr>
<h1>Результаты:</h1>
<div id="out"></div>
"#table input.data"— id="table" 内的所有具有“数据”类的输入。好吧,在周期结束时,它不必是
i++. 您可以在其中添加将在每次迭代中执行的任何代码(甚至是函数):您不需要生成唯一
id输入,因为您的锚元素是一行。我们收集了所有行,遍历每一行并计算输入的数量。