繁体   English   中英

如何从已删除的元素中控制台记录 innerText?

How to console.log the innerText from elements that were removed?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在我的updateCartTotal() function 中,我想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>
2 个回复

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

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

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

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

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

https://developer.mozilla.org/en-US/docs/Web/API/Element/closest

https://developer.mozilla.org/en-US/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>

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>

3 为什么console.log会删除nodejs中的字符?

我的nodejs代码正在从流中读取并将其打印在控制台上。 我发现一个有趣的行为, console.log为我剥离了字符。 例如,下面是我的nodejs上的调试窗口。 从该调试窗口中,您可以看到line的值包含一些Ansi编码字符。 但是,当我通过console.log其打印到终 ...

4 console.log中的DOM元素

node2和node3 length: 2是什么意思length: 2 ? DOM有两个元素,那就是数组(本例中为0和1 )但最后两个是什么? 我正在调试一个程序并尝试解决这个问题。 ...

6 删除 console.log 中的“空格”?

您认为可以删除 console.log 中的空间吗? 例如在此代码上 我想在一条线上显示我的破折号。 通过在下面的 StackOverFlow 上搜索,明显没有解决方案? Javascript:删除浏览器控制台中 output 数组的空白 ...

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

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

9 未删除console.log

我试图在构建生产版本时使用UglifyJsPlugin删除console.log。 但是,在生产模式下构建后,不会删除console.log代码。 这是我用于删除console.log的webpack代码。 Webpack配置: webpack模块: 我也在使用babe ...

10 Console.log() 和 el.innerText 立即重置(帮助)

我在 html 文件中有这个简单的模板。 每次单击按钮时,它都应该记录单击事件并在 #result 元素中打印“[NodeList]”,但它没有。 事实上,它会打印几毫秒,然后再次将其删除。 与 console.log(e) 相同。 我记录了这种行为:链接到视频: https : //drive.g ...

暂无
暂无

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

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