document.getElementById для внутреннего.Текст не работает

#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 . Попробуйте переименовать один из них.