在我的updateCartTotal()函数中,我要console.log从购物车中删除的元素。

每次按下删除按钮,我都希望它打印出itemprice 但是,每当我执行此操作时,它都会返回未定义。 在某些情况下,它只能识别1个项目。 我认为我的JavaScript代码没有问题,而可能是我的HTML

const updateCartTotal = () => {
    var cartItemContainer = document.getElementsByClassName('cart-items')[0]
    var cartRows = cartItemContainer.getElementsByClassName('cart-row')

    for(var i = 0; i < cartRows.length; i++){
        var cartRow = cartRows[i];
        var itemElement= cartRow.getElementsByClassName('cart-item')[0].innerHTML
        var priceElement = cartRow.getElementsByClassName('cart-price')[0].innerHTML
        var quantityElement = cartRow.getElementsByClassName('cart-quantity-input')[0]

        var item = itemElement.innerText
        var price = priceElement.innerText
        // var quantity = quantityElement.value
        console.log(item, price)
    }
}
<section class="container shopping-cart">
    <div class="title">Cart</div>
    <div class="cart-row">
        <span class="cart-item cart-header cart-column">ITEM</span>
        <span class="cart-price cart-header cart-column">PRICE</span>
        <span class="cart-quantity cart-header cart-column">QUANTITY</span>
    </div>
    <div class="cart-items">
        <div class="cart-row">
            <div class="cart-item">
                <span class="cart-item-title">Item 1</span>
            </div>
            <span class="cart-price ">$14.99</span>
            <div class="cart-quantity-input">
                <input type="number" value="1">
                <button class="btn btn-danger ml-5" type="button">REMOVE</button>
            </div>
        </div>
        <div class="cart-row">
            <div class="cart-item">
                <span class="cart-item-title ">Item 2</span>
            </div>
            <span class="cart-price">$79.99</span>
            <div class="cart-quantity-input">
                <input type="number" value="2">
                <button class="btn btn-danger ml-5" type="button">REMOVE</button>
            </div>
        </div>
    </div>
</section>

#1楼 票数:0

我看不到您当前的代码是如何控制台记录基于按钮单击的值的。 因此,我创建了功能removeItem()来实现所需的功能。 使用此解决方案将功能添加到您的代码中。

请参阅代码笔以获取解决方案。

https://codepen.io/ianroskow/pen/WNeagXQ

在“删除”按钮的onclick上,我传递上下文,然后遍历dom以控制台记录所需的值。

我使用最接近的方法来找到父节点,并使用查询选择器来找到子节点。

https://developer.mozilla.org/zh-CN/docs/Web/API/Element/closest

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/querySelector

  const updateCartTotal = () => { var cartItemContainer = document.getElementsByClassName('cart-items')[0] var cartRows = cartItemContainer.getElementsByClassName('cart-row') for(var i = 0; i < cartRows.length; i++){ var cartRow = cartRows[i]; var itemElement= cartRow.getElementsByClassName('cart-item')[0].innerHTML var priceElement = cartRow.getElementsByClassName('cart-price')[0].innerHTML var quantityElement = cartRow.getElementsByClassName('cart-quantity-input')[0] var item = itemElement.innerText var price = priceElement.innerText // var quantity = quantityElement.value console.log(item, price) } } function removeItem(element){ const cartRow = element.closest(".cart-row"); console.log(cartRow.querySelector(".cart-item-title").innerHTML); console.log(cartRow.querySelector(".cart-price").innerHTML); cartRow.parentNode.removeChild(cartRow); } 
  <section class="container shopping-cart"> <div class="title">Cart</div> <div class="cart-row"> <span class="cart-item cart-header cart-column">ITEM</span> <span class="cart-price cart-header cart-column">PRICE</span> <span class="cart-quantity cart-header cart-column">QUANTITY</span> </div> <div class="cart-items"> <div class="cart-row"> <div class="cart-item"> <span class="cart-item-title">Item 1</span> </div> <span class="cart-price ">$14.99</span> <div class="cart-quantity-input"> <input type="number" value="1"> <button class="btn btn-danger ml-5" onclick="removeItem(this)" type="button">REMOVE</button> </div> </div> <div class="cart-row"> <div class="cart-item"> <span class="cart-item-title ">Item 2</span> </div> <span class="cart-price">$79.99</span> <div class="cart-quantity-input"> <input type="number" value="2"> <button class="btn btn-danger ml-5" onclick="removeItem(this)" type="button">REMOVE</button> </div> </div> </div> </section> 

#2楼 票数:0

itemprice将不是要素。 它们是代表元素的innerHTML的字符串。
要获取商品名称,只需使用cartRow.getElementsByClassName('cart-item -title ')[0].innerHTML
要获取价格,请使用cartRow.getElementsByClassName('cart-price')[0].innerHTML

不要使用innerText,因为这会导致错误,因为itemprice已经是字符串。

 const updateCartTotal = () => { var cartItemContainer = document.getElementsByClassName('cart-items')[0] var cartRows = cartItemContainer.getElementsByClassName('cart-row') for (var i = 0; i < cartRows.length; i++) { var cartRow = cartRows[i]; var item = cartRow.getElementsByClassName('cart-item-title')[0].innerHTML var price = cartRow.getElementsByClassName('cart-price')[0].innerHTML var quantity = cartRow.getElementsByClassName('cart-quantity-input')[0] console.log(" Item: " + item + "\\n" + "Price: " + price) } } updateCartTotal(); 
 <section class="container shopping-cart"> <div class="title">Cart</div> <div class="cart-row"> <span class="cart-item cart-header cart-column">ITEM</span> <span class="cart-price cart-header cart-column">PRICE</span> <span class="cart-quantity cart-header cart-column">QUANTITY</span> </div> <div class="cart-items"> <div class="cart-row"> <div class="cart-item"> <span class="cart-item-title">Item 1</span> </div> <span class="cart-price ">$14.99</span> <div class="cart-quantity-input"> <input type="number" value="1"> <button class="btn btn-danger ml-5" type="button">REMOVE</button> </div> </div> <div class="cart-row"> <div class="cart-item"> <span class="cart-item-title">Item 2</span> </div> <span class="cart-price">$79.99</span> <div class="cart-quantity-input"> <input type="number" value="2"> <button class="btn btn-danger ml-5" type="button">REMOVE</button> </div> </div> </div> </section> 

  ask by faizan_khan98 translate from so

未解决问题?本站智能推荐:

2回复

如何遍历无序列表以获得LI元素的innerText的console.log

我需要创建一个事件侦听器,该事件侦听器在用户单击HTML中的列表项之一时触发。该操作应调用一个名为listItemText的函数,该函数返回被单击的列表项的innerText,即:如果他们单击首先,它应该记录““狗” 我已经尝试了所有可以想到的方法来获取被单击的li项目的正确对应的inner
8回复

如何根据元素的ID在console.log中打印值?

如何获取 id=email 的值并将其打印到我的控制台或任何地方以进行测试? 我试过了,但没有运气:(
6回复

在JavaScript的HTML元素中显示console.log()

我编写了一个函数,它将所有内容写入控制台(使用console.log(string); )。 现在我想在<p>或<div> “模拟”或显示生成的控制台日志。 有谁知道如何做到这一点?
2回复

为什么console.log的行为与.innerText/.innerHTML属性不同

我想用下面的代码写一个答案给另一个,但console.log行为与.innerText / .innerHTML属性不同。 为什么? 如何将console.log的输出显示在屏幕而不是控制台上? HTML, Javascript, Edit:我使用.innerHTML得到相同的结果
1回复

无法在javascript中输出console.log

当我用firefox浏览器打开以下文件时,我的屏幕上没有输出任何内容。 我究竟做错了什么?
1回复

在HTML中获取console.log

我已经编写了一个编译 java 代码的在线编辑器代码,问题是我从编译器获得输出为console.log() 输出是: {Warnings: null, Errors: null, Result: "Hello World!↵", Stats: "Compilation time: 0.72 sec,
3回复

Javascript中的Console.log()或getDocumentbyID?

在这个初级 Javascript 练习中,我找到了 2 个可能的解决方案(请参阅下面的代码): 控制台日志(); document.getElementById("valueID").innerHTML = 变量名; 在控制台 (F12) 或通过 DOM 打印解决方案有什么区别? 我知道con
2回复

如何从ionic的console.log中删除日志?

我现在希望构建和分发使用Ionic构建的应用程序。 但是,重新初始化console.log()不会产生预期的效果。 我试图重新初始化console.log函数,但是我的应用程序中仍然有日志。