#javascript
Вопрос:
В настоящее время я кодирую расчет javascript для веб-страницы корзины покупок. Но у меня проблема с моим промежуточным итогом, все работает хорошо, только итоговая сумма всего, что требуется для оплаты, неправильная.
Вот мой код таблицы, в который я помещаю все классы для функции промежуточного итога:
lt;trgt; lt;tdgt;$nolt;/tdgt; lt;tdgt;$item[item_name]lt;/tdgt; lt;tdgt; $item[item_price]lt;input type="hidden" id="only-number-input" class="cart_price" value="$item[item_price]" /gt; lt;/tdgt; lt;tdgt; lt;input type="number" class="text-center cart_qty" onchange="subTotal()" value="$item[qty]" min="1" max="10" /gt; lt;/tdgt; lt;td class="cart_total"gt;lt;/tdgt; lt;tdgt; lt;form action="manage-cart.php" method="post"gt; lt;button class="btn btn-sm btn-outline-danger" name="remove"gt; REMOVE lt;/buttongt; lt;input type="hidden" name="item_name" value="$item[item_name]" /gt; lt;/formgt; lt;/tdgt; lt;/trgt;
И вот где я поместил идентификатор промежуточного итога:
lt;div class="border-top py-4"gt; lt;h4 class="font-baloo font-size-20"gt;Subtotallt;/h4gt; lt;h5 class="text-danger" id="sub_total"gt;lt;/h5gt; lt;button type="submit" class="btn btn-warning mt-3"gt;Proceed to Buylt;/buttongt; lt;/divgt;
А вот мой код JavaScript:
var cart_price = document.getElementsByClassName('cart_price'); var cart_qty = document.getElementsByClassName('cart_qty'); var cart_total = document.getElementsByClassName('cart_total'); var sub_total = document.getElementById('sub_total'); function subTotal() { sub_total = 0; for (i = 0; i lt; cart_price.length; i ) { var calculation = (cart_price[i].value) * (cart_qty[i].value); cart_total[i].innerText = calculation; sub_total = sub_total calculation; } sub_total.innerText = sub_total; } subTotal();
Комментарии:
1. одна переменная не может быть двумя разными вещами……
Ответ №1:
Вы сбрасываете sub_total
значение 0
внутри своей функции, чтобы она больше не была ссылкой на элемент DOM.
Вы можете использовать другое имя для значения внутри функции. В этом примере я использовал sub_total_value
:
var cart_price = document.getElementsByClassName('cart_price'); var cart_qty = document.getElementsByClassName('cart_qty'); var cart_total = document.getElementsByClassName('cart_total'); var sub_total = document.getElementById('sub_total'); function subTotal() { var sub_total_value = 0; for (i = 0; i lt; cart_price.length; i ) { var calculation = (cart_price[i].value) * (cart_qty[i].value); cart_total[i].innerText = calculation; sub_total_value = sub_total_value calculation; } sub_total.innerText = sub_total_value; } subTotal();
Ответ №2:
В вашем коде javascript есть две переменные с именами sub_total
. Попробуйте переименовать один из них.