我第一天接触 Javascript,我感到非常困惑。我将从表单返回的数字传递给函数,但结果与应有的不一致。我的测试还有很多不足之处,但希望以下内容有意义。
函数g
计算序列的总和。
<form name="gaussform">
<input name="min"
type="number"
min="1"
value="1">
<input name="max"
type="number"
min="2"
value="10">
<input name="step"
type="number"
min="1"
value="1">
<input onclick="alert_g()"
type="submit"
value="calculate">
</form>
<script type="text/javascript">
function g(min,max,step) {
var actualmax = max - ((max - min) % step)
return (min + actualmax) * ((1 + ((actualmax - min) / step)) / 2)
}
function alert_g() {
var frm = document.forms["gaussform"]
var min = frm["min"].value
var max = frm["max"].value
var step = frm["step"].value
if (min == 1) {
alert("min is 1")}
if (max == 10) {
alert("max is 10")}
if (step == 1) {
alert("step is 1")}
alert(g(min,max,step))
// below returns the desired result
alert(g(1,10,1))}
</script>
if 语句只是为了让我能够理解发生了什么!
因此,如果用户输入 1,10,1(默认值),结果应为 55。
警报(g(1,10,1))
-> 55
警报(g(最小,最大,步长)
-> 550
警报(g(1,100,2))
-> 2500
alert(g(min,max,step)
-> 4975(显然 min,max,step == 1,100,2)
函数g
是正确的,但我不明白传递给它的值发生了什么。
最佳答案
这个表情...
min + actualmax
...就是问题所在。
你可能想要这样做...
+min + +actualmax
...或使用 parseFloat()
、parseInt()
或任何适合您要求的方法将这些字符串转换为实际的Number
。
jsFiddle .
JavaScript 的 +
运算符已重载用于算术加法和字符串连接。因为用户输入始终是一个字符串,所以您正在执行字符串连接。
关于JavaScript 表单编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13907153/