gpt4 book ai didi

javascript - 我的 js 函数没有完美添加

转载 作者:行者123 更新时间:2023-11-30 12:49:36 24 4
gpt4 key购买 nike

如您所见,我在表格中筛选的(总计)文本框上已经有一个值...如果我在(分数)文本框中键入一个数字,它将自动添加到总计的当前值(文本框)。

我的问题是它没有完美地添加。任何人都可以帮助我。

例子:

enter image description here

html代码:

<form id="frm" name="frm" />
<table>
<tr>
<td>
Name: <br />
<input type="text" name="name" value="<?php if(empty($name[0])){$name[0] = array(NULL);}else{echo $name[0];} ?>" readonly /> <br />
</td>
<td>
Score 1: <br />
<input type="text" name="optA" value="" onchange="optTotal()" /> <br />
</td>
<td>
Score 2: <br />
<input type="text" name="optB" value="" onchange="optTotal()" /> <br />
</td>
<td>
Score 3: <br />
<input type="text" name="optC" value="" onchange="optTotal()" /> <br />
</td>
<td>
Score 4: <br />
<input type="text" name="optD" value="" onchange="optTotal()" /> <br />
</td>
<td>
Total: <br />
<input type="text" name="totals" value="<?php if(empty($total[0])){$total[0] = array(NULL);}else{echo $total[0];} ?>" readonly onKeyUp="optTotal()" /> <br />
</td>
</form>

总计算脚本:

<script>
function optTotal() {
var a1 = document.forms[0].optA;
var b1 = document.forms[0].optB;
var c1 = document.forms[0].optC;
var d1 = document.forms[0].optD;
var xtotal = document.forms[0].totals;
if (a1.value && a1.value != "")
a1 = parseFloat(a1.value);
else
a1 = 0;

if (b1.value && b1.value != "")
b1 = parseFloat(b1.value);
else
b1 = 0;

if (c1.value && c1.value != "")
c1 = parseFloat(c1.value);
else
c1 = 0;

if (d1.value && d1.value != "")
d1 = parseFloat(d1.value);
else
d1 = 0;
if (xtotal.value && xtotal.value != "")
xtotal = parseFloat(xtotal.value);
else
xtotal = 0;

var total = a1 + b1 + c1 + d1 + xtotal;
document.forms[0].totals.value = total;

}
</script>

最佳答案

你的问题是你没有在任何地方存储原始值。

当您再次运行您的代码时,您会从总计(您已经添加 2 的那个)中获取当前值,然后再次将 5 添加到它,所以当然是值现在是 15 (10 + 5)。

您需要在加载时获取原始值并存储它,以便始终将其添加到原始总数中,或者获取文本框已更改的旧值并减去在添加新值之前从总数中扣除。

就我个人而言,我认为第一种方法可能更容易。

所以加载时是这样的:

 var xtotal = 0;    // define this somewhere so you can access it later in a closure or a global

var xtotalElement = document.forms[0].totals;
if (xtotalElement.value && xtotalElement.value != "")
xtotal = parseFloat(xtotalElement.value);

现在在您的 optTotal 中:

function optTotal() {
// get all the text boxes *except* the total as before
// ...

var total = a1 + b1 + c1 + d1 + xtotal; // this should be the original xtotal set on load
document.forms[0].totals.value = total;
}

这是一个有效的 fiddle

关于javascript - 我的 js 函数没有完美添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21408973/

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