javascript - 更改电子商务购物车的数量时更改产品价格
问题描述
我正在尝试增加或减少输入字段中的项目。在这样做时,我还想更新产品价格。控制台中的一切都很好,但我无法访问和更新 html 中的价格。我该怎么做?谢谢你。
我想将新价格添加到:
<td class="total-price">
<p class="price">
$200
</p>
</td>
谢谢你!
/* handling the quantity increase decrease */
$('.js-number').on('click', function() {
var currentQty = $(this).val()
var discountedPrice = $(this).attr('data')
console.log(discountedPrice)
$('.js-number').change(function() {
var updatedQty = $(this).val()
var updatedPrice = discountedPrice * updatedQty
$(this).val(updatedQty)
console.log(updatedQty)
console.log(updatedPrice)
$(this).closest(".total-price > .price").html(updatedPrice)
})
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class="bcart-quantity single-product-detail">
<div class="single-product-info">
<div class="e-quantity">
<input type="number" step="1" min="1" max="999"
name="quantity" value="2" title="Qty" class="qty input-text js-number"
size="4" data="200">
</div>
</div>
</td>
<td class="total-price">
<p class="price">
$200
</p>
</td>
</tr>
</table>
解决方案
我为你准备了这个应该可以工作的脚本。问题是closest
根据 JQuery 文档的closest
工作方式是这样的:
对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先来获取与选择器匹配的第一个元素。
所以改变它:
/* handeling the quantity increase decrease */
$('.js-number').on('click', function() {
var currentQty = $(this).val()
var discountedPrice = $(this).attr('data')
var updatedQty = $(this).val()
var updatedPrice = discountedPrice * updatedQty
$(this).val(updatedQty)
$(this).closest("tr").find('.price').text('$' + updatedPrice)
})
推荐阅读
- html - 我想在我的 HTML 文件中链接到我的外部 CSS 文件
- sqlite - 迭代 sqlite3_next_stmt() 时得到旧结果
- python - 无法从继承类将项目添加到字典中
- bash - 如何更改我的 bash_profile 以读取和公开我已经在某些脚本文件中定义的所有 func() ?
- javascript - 代码中需要更正哪些内容才能使其在智能手机上运行?
- cordova - Cordova VueJs Webpack 延迟加载在生产中失败
- python - 如何将数据权重包含到 Scipy NNLS 函数中?
- mysql - mysql插入忽略多行插入中已经可用的行
- python - IndexError:字符串索引超出范围 - Python
- html - 在反应材料-ui按钮中自动调整字体大小以获取意外的长内容?