Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的js函数添加得不完美_Javascript_Php_Html - Fatal编程技术网

Javascript 我的js函数添加得不完美

Javascript 我的js函数添加得不完美,javascript,php,html,Javascript,Php,Html,如您所见,我在表中筛选的(总计)文本框中已经有一个值……如果我在(分数)文本框中键入一个数字,它将自动添加到总计(文本框)的当前值上 我的问题是它添加得不完美。有人能帮我吗 例如: html代码: <form id="frm" name="frm" /> <table> <tr> <td> Name: <br /> <input type="text" name="name" value="<?php if(empty($

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

我的问题是它添加得不完美。有人能帮我吗

例如:

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>

名称:

您的问题是没有将原始值存储在任何位置

当您再次运行代码时,您从总数(您已经添加了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);
现在在您的
optottal
中:

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;
}
这是一张工作票

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;
}