Как изменить значения td, изменив входное числовое значение?
У меня есть представление, которое показывает продукты по группам. Моя цель заключается в том, что когда пользователь вводит число во вход productCount ,сумму ProductPrice и сумму цены продукта со скидкой chang,как я могу это сделать?
Я попробовал функцию ,которая написана в нижней части представления,но она работает только на первой строке,затем я попытался использовать класс вместо идентификатора ,но он не работает для каждой строки.
как я могу написать функцию MySum() для работы с каждой строкой таблицы?
Что я уже пробовал:
<div class="row "> <table class="table table-bordered table-hover table-striped col-md-11 text-center "> <tr> <th>Row</th> <th>Image</th> <th>ProductTitle and Details</th> <th>Size</th> <th>Price</th> <th>Discount</th> <th>Count</th> <th>Sum</th> <th>SumWithDiscount</th> </tr> @{ int RowCount = 1; } @foreach (var item in Model.IEProduct) { <tr> <td>@RowCount</td> <td><img src="/img/logo.png" width="100" /></td> <td><a href="/Product/ShowProduct/@item.ProductID" target="_blank">@item.ProductTitle</a></td> <td>@item.Size</td> <td value="@item.ProductPrice" class="productPrice"> @if (item.ProductPrice.HasValue) { @item.ProductPrice.Value.ToString("0,#") } </td> @if(item.Discounts.Any(d => d.ProductID == item.ProductID)) { <td class="productDiscount" value="@item.Discounts.First(d => d.ProductID == item.ProductID).DiscountPercent" > @item.Discounts.First(d => d.ProductID == item.ProductID).DiscountPercent </td> } else { <td class="productDiscount" value="0" > 0 </td> } @*@Html.Action("shoppingCart","Product",new {productid=item.ProductID })*@ <td> <input type="number" min="0" class="input" style="width: 70px;"/> </td> <td class="Sum"> </td> <td class="SumWithDiscount"> </td> </tr> RowCount++; } </table> </div> </div> </div> @section Script { <script> function MySum() { var percent = $('#productDiscount').attr("value"); var price = $('#productPrice').attr("value"); var productcount = document.getElementById('count').value; var sum = productcount * price; var sumwithdiscount = sum - ((sum * percent) / 100); $('#Sum').html(sum); $('#SumWithDiscount').html(sumwithdiscount); } $(".input").onKeyUp(function () { var percent = $('.productDiscount').attr("value"); var price = $('.productPrice').attr("value"); var productcount = $(this).value; var sum = productcount * price; var sumwithdiscount = sum - ((sum * percent) / 100); $(".Sum").each(function () { $(this).html(sum); }); $(".SumWithDiscount").each(function() { $(this).html(sumwithdiscount); }); }); </script> }
j snooze
Есть много способов сделать это, вы можете получить elementsbytagname и захватить строки. вы можете поместить определенный класс или имя на все элементы, которые вы хотите суммировать, и использовать jquery, чтобы захватить их все, или обычный javascript getElementsByName.
Member 13646828
Я пытался использовать класс для элементов, но это не работает.
не могли бы вы привести мне пример? я новичок в javascript
j snooze
Это не точный синтаксис, но google вокруг, чтобы получить это. Сначала начните свой rowcount с 0 вместо 1, чтобы у вас была нулевая строка, которая поможет в следующей части. Затем дайте всем элементам, содержащим значения, которые вы хотите вычислить атрибут name, даже если это таблица sell so
(Я не могу поместить сюда html-материал, иначе он будет кодировать его, поэтому просто знайте, что знаки больше/меньше должны использоваться в вашем html)
(формат HTML)
ООО " ТД " имя="discountPercent" класс="productDiscount" значение="@товар.Скидки.Во-первых(d => d.ProductID == item.ProductID).DiscountPercent"
td name="productPrice" value="@item.Параметр" класс="параметр"
ООО " ТД " имя="количество" тип="число" мин.="0" класс="входного" стиль="ширина: 70px;"
ООО " ТД " имя="сумма"
теперь в JavaScript, а не jQuery или стрельбы на клавиша вверх создать функцию как
(яваскрипт)
функция onCountChange(rownumber){
var discntPct = document.getElementsByName("discountPercent");
var prodPrice = document.getElementsByName("productPrice");
var qty = document.getElementsByName("количество");
var sum = document.getElementsByName("сумма");
сумму.через свойство innerText = кол-во[функция rownumber] * prodPrice[функция rownumber] * discntPct[функция rownumber]
}
Таким образом, по существу, вы можете использовать этот номер строки, который уже есть, чтобы ссылаться на каждый элемент управления, если вы даете каждому элементу управления или столбцу, который вы хотите использовать в вычислении, имя. Таким образом, все столбцы Discount percent TD имеют имя, которое вы можете запросить с помощью getElementsByName, который создает массив в javascript всех элементов с этим именем. Передача номера строки в функцию javscript сообщает функции, какое количество строк изменилось, так что вы можете сделать свою математику на этой строке.
Надеюсь, это поможет вам указать правильное направление. все это можно сделать и с помощью jquery, я просто пошел немного в старом стиле.