У меня есть таблица данных о продуктах, и пользователь может ввести количество продукта для покупки в каждой строке. Я хотел бы вычислить общую цену за продукт в каждой строке, а затем общую стоимость всей покупки под таблицей.
Это моя таблица:
<table id="productTable">
<thead>
<tr>
<th>Amount</th>
<th>
@Html.DisplayNameFor(model => model.Products[0].Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Products[0].Price)
</th>
<th>Total</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Products)
{
<tr>
<td>
<input type="number" id="quantityInput" onchange="calcSubTotal()" min="0" value="0" />
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td id="priceLabel">
@Html.DisplayFor(modelItem => item.Price)
</td>
<td id="labelSubTotal"></td>
</tr>
}
</tbody>
Предметы поступают из модели (IList). Я хочу умножить введенное значение ввода (номер типа) и цену соответствующей строки с помощью JavaScript.
В JavaScript я использую getElementById для доступа к элементам пользовательского интерфейса. Как я могу получить доступ к строке таблицы, в которой находится фокус HTML-ввода?
Мой JavaScript:
<script type="text/javascript">
function calcSubTotal() {
var numberInput = document.getElementById('quantityInput');
var val = numberInput.value;
var amount = parseFloat(val);
var priceLabel = document.getElementById('priceLabel');
var priceValue = priceLabel.innerText;
var price = parseFloat(priceValue);
var totalPrice = amount * price;
var subTotalLabel = document.getElementById('labelSubTotal');
subTotalLabel.innerText = totalPrice.toString();
}
</script>