gpt4 book ai didi

javascript - 协助 JavaScript sum 函数

转载 作者:行者123 更新时间:2023-11-28 00:19:00 25 4
gpt4 key购买 nike

刚开始发帖,但曾访问过此网站 +/- x1000。

我真的很想获得一些关于如何扩展此脚本以计算更多表单字段的信息。

目前,此 html\jscript 页面将使用 OnChange 事件对 2 个表单字段执行 SUM 计算。一切正常,但我无法将其他字段添加到计算范围内。

下面是工作代码,如果您想查看我当前的代码尝试,请告诉我。非常感谢您提供的任何帮助。谢谢。

<html> 
<head>
<title>Calulate</title>

<script type="text/javascript">
function calc(A,B,SUM) {
var one = Number(A);
if (isNaN(one)) { alert('Invalid entry: '+A); one=0; }
var two = Number(document.getElementById(B).value);
if (isNaN(two)) { alert('Invalid entry: '+B); two=0; }
document.getElementById(SUM).value = one + two;
}
</script>

<body>
<form name="form" >
Enter a number:
<input name="sum1" id="op1" value="" onChange="calc(this.value,'op2','result')" />
and another number:
<input name="sum2" id="op2" value="" onChange="calc(this.value,'op1','result')" />
<br>
Their sum is:
<input name="sum" value="" id="result" readonly style="border:0px;">
</form>
</body>
</html>

最佳答案

当然,有多种方法可以编写计算多个输入之和的函数。我将通过扩展您已有的内容来做到这一点,以便您更好地理解您所拥有的代码实际上在做什么。最后,可能会有更好的解决方案涉及完全重写。

您必须为数据输入添加标记:

and a third number: 
<input name="sum3" id="op3" value="" />

您的函数声明必须修改以接受一个多参数:

function calc(A,B,C,SUM) { 

您的函数体必须像对待 AB 一样对待此参数:

var three = Number(document.getElementById(C).value); 
if (isNaN(three)) { alert('Invalid entry: '+C); three=0; }

您的总和必须考虑这个新数字:

document.getElementById(SUM).value = one + two + three;

所有三个输入字段都必须更新它们的 onChange 属性,以传递我们定义的新 C 参数:

<input name="sum1" id="op1" value="" onChange="calc(this.value,'op2','op3','result')" /> 
<input name="sum2" id="op2" value="" onChange="calc(this.value,'op1','op3','result')" />
<input name="sum3" id="op3" value="" onChange="calc(this.value,'op1','op2','result')" />

现在,为了让您了解可以完全不同地执行哪些操作,您可以通过类名访问元素,而不是通过 ID 访问元素。例如,您可以将类名 calc 添加到所有三个输入字段。您可以让函数知道此类名称,或者将其作为参数传递。在这种情况下,该函数不需要接收ABC,但它只需要类名和输出字段。

function(className, SUM) {
...
}

在您的函数中,您将能够找到该类名称的所有元素:

var inputs = document.getElementsByClassName(className);

并遍历它们,边走边添加值:

var sum = 0;
for(var i = 0; i < inputs.length; i++) {
var input = inputs[i];
var num = Number(input.value);

if(isNaN(num)) {
alert('Invalid value: ' + input.value);
num = 0;
}

sum += num;
}

document.getElementById(SUM).value = sum;

然后您将添加类名并更新您的 onChange 属性,如下所示:

<input name="sum1" class="calc" onChange="calc('calc','result')" /> 
<input name="sum2" class="calc" onChange="calc('calc','result')" />
<input name="sum3" class="calc" onChange="calc('calc','result')" />

然后您可以添加任意数量的输入字段,并且无需修改函数即可自动计算它们。

关于javascript - 协助 JavaScript sum 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10281505/

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