Rajesh k bhushan Ответов: 1

Мне нужна сумма первого столбца всей строки, и эта сумма отображается в одном текстовом поле. Как это сделать


Я создал одну динамическую html-таблицу. внутри этого два столбца доступны. первое-это сумма, второе-описание. Я хочу, чтобы сумма первого столбца всех строк и эта сумма отображалась в одном текстовом поле Debit Total как это сделать я попробовал использовать функцию getSum (), но это не работает никто мне не поможет

Что я уже пробовал:

<SCRIPT language="javascript">
		
		function addRow(tableID) {

			var table = document.getElementById(tableID);

			var rowCount = table.rows.length;
			var row = table.insertRow(rowCount);

			var cell1 = row.insertCell(0);
			var element1 = document.createElement("input");
			element1.type = "checkbox";
			element1.name="chkbox[]";
			cell1.appendChild(element1);

			var cell2 = row.insertCell(1);
			var element3 = document.createElement("input");
			element3.type = "text";
			element3.name = "amount";
			getSum(tableID);
			cell2.appendChild(element3);

			var cell3 = row.insertCell(2);
			var element2 = document.createElement("input");
			element2.type = "text";
			element2.name = "description";
			cell3.appendChild(element2);


		}

		function deleteRow(tableID) {
			try {
			var table = document.getElementById(tableID);
			var rowCount = table.rows.length;

			for(var i=0; i<rowCount; i++) {
				var row = table.rows[i];
				var chkbox = row.cells[0].childNodes[0];
				if(null != chkbox && true == chkbox.checked) {
					table.deleteRow(i);
					rowCount--;
					i--;
				}


			}
			}catch(e) {
				alert(e);
			}
		}
		
		function getSum(tableID) 
		{
			var table = document.getElementById(tableID);
			var sumVal = 0;
			for(var i=1; i < table.rows.length; i++)
				{
					sumVal = sumVal + parseInt(table.rows[i].cells[1].innerHTML);
				}
			document.getElementById("debitT").innerHTML = sumVal;
		}
</script>
<pre lang="HTML">
<pre><br>
				<input type="button" value="Add Row" onclick="addRow('dataTable')" style="background-color:green;"/>
				<input type="button" value="Delete Row" onclick="deleteRow('dataTable')" style="background-color:red;"/>
				<br>
				<table align="right" id="dataTable" border="1" width="350px">
					<tr>
						<th></th>
						<th>Amount</th>
						<th>Description</th>
					</tr>
					<tr>
						<td><input type="checkbox" name="chk"/></td>
						<td><input type="text" name="amount"/></td>
						<td><input type="text" name="description"/></td>
					</tr>
					<pre><tr>
						<td>Debit Total</td>
						<td><input id="debitT" type="text" name="debittotal" onkeyup="sum()"/></td>
					</tr>
					<tr>

Richard MacCutchan

Пожалуйста, отредактируйте свой вопрос и объясните, что вы подразумеваете под этим "это не работа".

1 Ответов

Рейтинг:
8

Bryian Tan

В Кодексе много драматизма. Я постараюсь указать на это как можно больше

1. Размещенные разметки показаться немного странным, как отсутствует закрывающий тег таблицы </table>, верхний регистр <SCRIPT>, затем <pre> тег между разметкой и т. д... Я предполагаю, что это не проблема с вашей стороны
2. Я бы предложил назвать getSum на debitT текстовое поле нажмите, в настоящее время код есть onkeyup="sum()"- Я ничего не понимаю sum() метод во всяком случае в коде
3. Если вы внимательно посмотрите на код, то увидите, что он добавляет textbox таким образом, в ячейку таблицы код не может просто перейти и суммировать значение в ячейке. ниже приведен пример того, как получить доступ к textbox ценность.

let innerCell = table.rows[i].cells[1];
let textBox = innerCell.getElementsByTagName("input")[0];
sumVal = sumVal + parseInt(textBox.value);

4. для текстового поля используйте .value собственность вместо этого .innerHTML
5. Обратите внимание на петлю

Вот вам пример: CP_row_sum - JSFiddle[^]


Rajesh k bhushan

спасибо что дали мне ответ