javascript - 在不同的四个 div 中查找单个输入值
问题描述
如果我有四个没有类、id 或名称的 div,今天我想计算单个输入值,
那我该怎么办?
<div id="showShoppingCart">
<div>
...
<input type="text" class="num" name="367303" maxlength="2" value="10">
<h3>total Quantity is: 10</h3>
...
</div>
<div>
...
<input type="text" class="num" name="367304" maxlength="2" value="10">
<input type="text" class="num" name="367305" maxlength="2" value="5">
<h3>total Quantity is: 15</h3>
...
</div>
<div>
...
<input type="text" class="num" name="367306" maxlength="2" value="10">
<h3>total Quantity is: 10</h3>
...
</div>
<div>
...
<input type="text" class="num" name="367307" maxlength="2" value="20">
<h3>total Quantity is: 20</h3>
...
</div>
</div>
因为我的网站是购物车页面,也许今天用户将输入name = 367303
值从 10 更改为 5,
更改后,JS会计算最新的数量和价格,然后显示在页面上。
但我的 JS 逻辑是这样的:
newTotalCount = 0;
numAry = [];
$('.num').each(function(){
newTotalCount += +$(this).val();
numAry.push($(this).val());
});
var newNum = $('.num').parent().find('input').val();
console.log(newNum);
一种是我$('.num').each
用来计算输入值,数组numAry是用来存储输入值的,这样会计算所有输入值。
另一个是$('.num').parent().find('input').val()
用来获取输入值,但是这种方式也会得到五个不同的输入值,但实际上我只想计算name = 367303
值!
那么,我该怎么办?
解决方案
重新计算变化
const cart = document.getElementById("showShoppingCart")
const inps = [...document.querySelectorAll("#showShoppingCart inps")];
cart.addEventListener("input", function(e) {
const tgt = e.target;
const parent = tgt.closest("div")
const total = parent.querySelector("h3 span")
total.innerText = [...parent.querySelectorAll(".num")].map(inp => +inp.value).reduce((a, b) => a + b)
});
// initialise the totals
[...document.querySelectorAll("#showShoppingCart h3 span")].forEach(total => total.innerText = [...total.closest("div").querySelectorAll(".num")].map(inp => +inp.value).reduce((a, b) => a + b))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<div id="showShoppingCart">
<div>
<input type="text" class="num" name="367303" maxlength="2" value="10">
<h3>total Quantity is: <span></span></h3>
</div>
<div>
<input type="text" class="num" name="367304" maxlength="2" value="10">
<input type="text" class="num" name="367305" maxlength="2" value="5">
<h3>total Quantity is: <span></span></h3>
</div>
<div>
<input type="text" class="num" name="367306" maxlength="2" value="10">
<h3>total Quantity is: <span></span></h3>
</div>
<div>
<input type="text" class="num" name="367307" maxlength="2" value="20">
<h3>total Quantity is: <span></span></h3>
</div>
</div>
推荐阅读
- ios - 在 Audiokit v5-main 中接收到 sysex 消息时,不会调用 ReceivedMIDISystemCommand()
- excel - Excel宏“Entirerow.Hidden”如何让它运行得更快?
- node.js - Validating data w/ Express before POST - Page hangs when data is invalid
- python - 最佳匹配搜索 Json 文件
- ios - 如何在基于 webview 的 Flutter 应用中使用 iOS 应用内购买 API?
- python - if..increment 变量 else..increment 不同的变量
- python - 如何在中断的情况下执行嵌套列表理解?
- c# - NLog FileTarget 延迟 LogEventInfo
- tensorflow - Keras 图像本地化。当输出是图像分类时,我没有问题,一旦我添加了输出列表,它会显示以下错误
- reactive-programming - 在 Spring Webflux 中进行 Grpc 调用