简体   繁体   English

为什么我一直得到这个 Total: £NaN 当我点击删除按钮时,而不是 Total:£19.99。? Nan Error 不会消失,我想我没有更多的想法了

[英]Why i keep getting this Total: £NaN when i hit remove button ,instead of Total:£19.99 .? Nan Error is not goin away i dont think i have any more idea

Why do I keep getting this Total: £NaN when I hit the remove button, instead of Total:£19.99.?为什么当我点击删除按钮时,我总是得到这个 Total: £NaN,而不是 Total:£19.99。? Nan Error is not going away I don't think I have any more idea What am I doing wrong guys. Nan Error 不会消失,我想我不知道我在做什么错了伙计们。 and I would like it to display the total value but it keeps Total NAN Thanks for helping我希望它显示总价值,但它保留 Total NAN 感谢您的帮助

 var removeCartItemButtons = document.getElementsByClassName("btn-danger"); console.log(removeCartItemButtons); for (var i = 0; i < removeCartItemButtons.length; i++) { var button = removeCartItemButtons[i]; button.addEventListener("click", function(event) { var buttonClicked = event.target; buttonClicked.parentElement.parentElement.remove() updateCartTotal() }) } function updateCartTotal() { var cartItemContainer = document.getElementsByClassName("cart-items")[0]; var cartRows = cartItemContainer.getElementsByClassName("cart-row"); var total = 0; for (var i = 0; i < cartRows.length; i++) { var cartRow = cartRows[i]; var priceElement = cartRow.getElementsByClassName("cart-price")[0] var quantityElement = cartRow.getElementsByClassName("cart-quantity")[0]; var price = parseFloat(priceElement.innerText.replace('£', "")); var quantity = quantityElement.Value; total = total + (price * quantity); } document.getElementsByClassName("cart-total-price")[0].innerText = "£" + total; } '
 <div class="cart-items"> <.---cart-row start------------> <div class="cart-row "> <div class="cart-item cart-column"> <img class="cart-image-item" src="a1.jpg" alt="img" width="100" height="100"> <span class="cart-item-title">T-shirt</span> </div> <span class="cart-price cart-column">£19.99</span> <div class="cart-quantity cart-column"> <input class="cart-quantity" type="number" value="1"> <button class="btn btn-danger" type="button">Remove</button> </div> </div> <.--cart-row-end-----------> <div class="cart-row "> <div class="cart-item cart-column"> <img class="cart-image-item" src="a2:jpg" alt="img" width="100" height="100"> <span class="cart-item-title">Album 3</span> </div> <span class="cart-price cart-column">£9.99</span> <div class="cart-quantity cart-column"> <input class="cart-quantity" type="number" value="2"> <button class="btn btn-danger" type="button">Remove</button> </div> </div> </div> <!--cart-items-end-----------> <div class="cart-total"> <strong class="cart-item-title">Total:</strong> <span class="cart-total-price">£39.99</span> </div>

You have at least two typos.你至少有两个错别字。 There is a single quote at the end of your JavaScript code and you have var quantity = quantityElement.Value;您的 JavaScript 代码末尾有一个单引号,并且您有var quantity = quantityElement.Value; instead of var quantity = quantityElement.value;而不是var quantity = quantityElement.value; . . After I fixed it quantity is undefined and price * quantity is NaN .在我修复它之后quantityundefined并且price * quantityNaN

The selector选择器

cartRow.getElementsByClassName("cart-quantity")[0]

returns this element返回这个元素

<div class="cart-quantity cart-column">

This element doesn't have a value attribute.该元素没有value属性。 You mean你的意思是

<input class="cart-quantity" type="number" value="2">

This element can be selected with这个元素可以选择

cartRow.getElementsByClassName("cart-quantity")[1]

Example:例子:

 var removeCartItemButtons = document.getElementsByClassName("btn-danger"); for (var i = 0; i < removeCartItemButtons.length; i++) { var button = removeCartItemButtons[i]; button.addEventListener("click", function(event) { var buttonClicked = event.target; buttonClicked.parentElement.parentElement.remove() updateCartTotal() }) } function updateCartTotal() { var cartItemContainer = document.getElementsByClassName("cart-items")[0]; var cartRows = cartItemContainer.getElementsByClassName("cart-row"); var total = 0; for (var i = 0; i < cartRows.length; i++) { var cartRow = cartRows[i]; var priceElement = cartRow.getElementsByClassName("cart-price")[0] var quantityElement = cartRow.getElementsByClassName("cart-quantity")[1]; var price = parseFloat(priceElement.innerText.replace('£', "")); var quantity = quantityElement.value; total = total + (price * quantity); } document.getElementsByClassName("cart-total-price")[0].innerText = "£" + total; }
 <div class="cart-items"> <.---cart-row start------------> <div class="cart-row "> <div class="cart-item cart-column"> <img class="cart-image-item" src="a1.jpg" alt="img" width="100" height="100"> <span class="cart-item-title">T-shirt</span> </div> <span class="cart-price cart-column">£19.99</span> <div class="cart-quantity cart-column"> <input class="cart-quantity" type="number" value="1"> <button class="btn btn-danger" type="button">Remove</button> </div> </div> <.--cart-row-end-----------> <div class="cart-row "> <div class="cart-item cart-column"> <img class="cart-image-item" src="a2:jpg" alt="img" width="100" height="100"> <span class="cart-item-title">Album 3</span> </div> <span class="cart-price cart-column">£9.99</span> <div class="cart-quantity cart-column"> <input class="cart-quantity" type="number" value="2"> <button class="btn btn-danger" type="button">Remove</button> </div> </div> </div> <!--cart-items-end-----------> <div class="cart-total"> <strong class="cart-item-title">Total:</strong> <span class="cart-total-price">£39.99</span> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM