JavaScript 表单编号

标签 javascript forms numbers

我第一天接触 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/

相关文章:

css - 启用 HTML 5 表单验证但禁用 'standard' 错误消息

python - 我想创建一个函数,以 pythonic 方式通过 num 变量滚动一定数量的骰子

javascript - 附加尾部选择选项以维持功能

javascript - 主干 |文件就绪脚本

javascript - 尝试在 React 中构建通用表单组件而不使用 eval()

java - GUI 随机方程生成器

c - 为什么我生成的随机数在循环内没有改变? C

javascript - PHP/Ajax 登录到网络路由器

javascript - Requirejs 为什么以及何时使用垫片配置

php - 表单未在 Chrome 和 Safari 中提交