gpt4 book ai didi

javascript - 输入值的 parseFloat 返回 NaN

转载 作者:行者123 更新时间:2023-12-03 05:36:14 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本,动态计算用户可编辑的 4 个输入的总计。

当我对输入值使用parseFloat时,我遇到了一些麻烦。它们以 NaN 形式返回。

到目前为止,我已经尝试使用 parseInt 而不是 parseFloat,使用 .val() 而不是 .value,使用 name 属性而不是 id 属性,以及其他一些我一时记不起的东西。

我还没有看到对我有用的类似问题的任何其他答案,所以如果您不介意查看我的代码以了解我可能出错的地方,我将不胜感激。谢谢!

<!DOCTYPE HTML>

<html>
<head>
<meta charset="utf-8">
<title>Calc</title>
<style>

</style>
</head>

<body>
<table width = "250" border="1">
<tr>
<th align="left">A</th>
<th align="left">B</th>
</tr>
<tr>
<td>Rent</td>
<td id="rent" align="right">
<input type="text" size="7" value="0" onchange="calc()"></td>
</tr>
<tr>
<td>Food</td>
<td id="food" align="right">
<input type="text" size="7" value="0" onchange="calc()"></td>
</tr>
<tr>
<td>Entertainment</td>
<td id="ent" align="right">
<input type="text" size="7" value="0" onchange="calc()"></td>
</tr>
<tr>
<td>Transportation</td>
<td id="trans" align="right">
<input type="text" size="7" value="0" onchange="calc()"></td>
</tr>
<tr>
<th align="left">Total</th>
<td id="total" align="right"></td>
</tr>
</table>
<script>
function calc() {
var w = parseFloat(document.getElementById("rent").value);
var x = parseFloat(document.getElementById("food").value);
var y = parseFloat(document.getElementById("ent").value);
var z = parseFloat(document.getElementById("trans").value);

document.getElementById("total").innerHTML=w+x+y+z;
}
</script>
</body>
</html>

最佳答案

您正在提供您的细胞(<td>标签)id属性,而不是您的实际 input字段。

移动id属性 input elements 解决了这个问题。

此外,由于您要调用 calc如果要重复使用函数,则只需扫描一次文档以获取对您要反复使用的元素的引用会更有意义。

最后,最好不要将 HTML 元素与 HTML 本身发生事件时应触发的 JavaScript 函数 Hook 。您可以在我的代码片段中看到我如何将其从 HTML 中删除并将其放入 JavaScript 中。

// Wait until the DOM is fully loaded
window.addEventListener("DOMContentLoaded", function(){

// Declare and initialze variable references to needed elements:
var wElement = document.getElementById("rent");
var xElement = document.getElementById("food");
var yElement = document.getElementById("ent");
var zElement = document.getElementById("trans");

// Wire elements to event handlers:
wElement.addEventListener("change", calc);
xElement.addEventListener("change", calc);
yElement.addEventListener("change", calc);
zElement.addEventListener("change", calc);

// Event handler:
function calc() {
var w = parseFloat(wElement.value);
var x = parseFloat(xElement.value);
var y = parseFloat(yElement.value);
var z = parseFloat(zElement.value);

document.getElementById("total").textContent = w + x + y + z;
}
});
<table width = "250" border="1">
<tr>
<th align="left">A</th>
<th align="left">B</th>
</tr>
<tr>
<td>Rent</td>
<td align="right">
<input type="text" id="rent" size="7" value="0"></td>
</tr>
<tr>
<td>Food</td>
<td align="right">
<input type="text" id="food" size="7" value="0"></td>
</tr>
<tr>
<td>Entertainment</td>
<td align="right">
<input type="text" id="ent" size="7" value="0"></td>
</tr>
<tr>
<td>Transportation</td>
<td align="right">
<input type="text" id="trans" size="7" value="0"></td>
</tr>
<tr>
<th align="left">Total</th>
<td id="total" align="right"></td>
</tr>
</table>

关于javascript - 输入值的 parseFloat 返回 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40726458/

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