gpt4 book ai didi

javascript - 从输入中添加生成的值

转载 作者:行者123 更新时间:2023-11-30 19:29:02 26 4
gpt4 key购买 nike

我有一个网站,我可以在其中输入商品的数量,然后它会获取该输入值并在页面上返回结果。然后我试图获得所有项目的结果并返回总计。

问题是当我循环执行此操作时,它只会添加第一个。

我创建了一个 fiddle :https://jsfiddle.net/rc1mgLj5/4/

我正在使用 querySelectorAll 并使用所有 className 的长度作为第一次返回的结果。

然后在将它们从文本解析为数字后循环它们。

但目前它只是在做第一次计算。如果我删除 for 循环,第一部分将再次正常工作。

因为它只对第一项进行第一次计算,所以我得到第二项的 NaN,因为它没有要解析的数字。

const total = document.querySelectorAll(".tot");
const price = document.querySelectorAll(".cost");
let textval = document.querySelectorAll(".qty-item");
const cal = document.getElementById("calc");
const errorMessage = document.querySelectorAll(".error");

cal.addEventListener("mouseover", function(e) {
console.log(total);
for (var i = 0; i < price.length; i++) {
let xPrice = price[i].innerHTML.split("$");
let parsePrice = parseFloat(xPrice[1]);
if (textval[i].value === "" || isNaN(textval[i].value)) {
setMessage("Please enter a number", "red");
} else {
let x = parseFloat(textval[i].value);
let y = parsePrice;

let z = x * y;

total[i].innerText = z.toFixed(2);

total[i].innerText = z;

for (i = 0; i < total.length; i++) {
let j = parseFloat(total[i].innerHTML);

console.log(j);
}
}
}
});

HTML:

<body>
<div class="main">
<span class="title">A Title</span>
</div>
<div class="content">
<div class="item">
<span>Item 1</span>
</div>
<div>
<span class="cost">$100.00</span>
</div>
<div id="qty">
<label>QTY:</label><input placeholder="0" class="qty-item">
<p class="error"></p>
</div>
<div class="tot">
<span><label>TOTAL</label> $0.0</span>
</div>
</div>
<br><br>
<div class="main">
<span class="title">A Title</span>
</div>
<div class="content">
<div class="item">
<span>Item 2</span>
</div>
<div>
<span class="cost">$50.00</span>
</div>
<div class="qty">
<label>QTY:</label><input placeholder="0" class="qty-item">
<p class="error"></p>
</div>
<div class="tot">
<span><label>TOTAL</label> $0.0</span>
</div>
</div>

<div class="calc-button">
<button id="calc">Calculate Prices</button>
</div>

</body>

最佳答案

您正在使用与索引相同的 i 变量嵌套两个 for:

cal.addEventListener('mouseover', function(e) {
console.log('total', total);
for (var i = 0; i < price.length; i++) {
//...

for (i = 0; i < total.length; i++) { // <== uses "i" again
let j = parseFloat(total[ii].innerHTML);

console.log(j);

}
}
}
});

只需将第二个 for 的变量替换为另一个名称即可。示例:

for (let k = 0; k < total.length; k++) {
let j = parseFloat(total[k].innerHTML);
console.log(j);
}

演示:https://jsfiddle.net/acdcjunior/gpLvszx3/

关于javascript - 从输入中添加生成的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com