首页 > 解决方案 > 添加数字随机连接为字符串而不是数值

问题描述

我写了一个简单的函数来分别添加奇数和偶数,在给定的两个数字之间

这是我的代码:

    function calculateSum() {
        var startV = document.getElementById("startV").value;
        var endV = document.getElementById("endV").value;
        var evenV = 0;
        var oddV = 0;
        console.log(">>", "evenV", typeof evenV)
        console.log(">>", 'oddV', typeof oddV)


        for (var i = startV; i <= endV; i++) {
            if ((i % 2) == 0) {
                evenV = evenV + i;
                console.log(i, "evenV", typeof evenV)
            } else {
                oddV = oddV + i;
                console.log(i, 'oddV', typeof oddV)
            }
        }
        var disMessage = "even Value:" + evenV + "</br> odd Value:" + oddV;

        document.getElementById("dis").innerHTML = disMessage;
    }

如果startV为 2 且endV为 5,则预期输出为偶数 V = 6 和奇数 V = 8。但接收到的输出为

偶数:024 奇数:8

结果截图

  1. 为什么javascript有这种行为?
  2. 我知道我可以parseInt明确使用。但这是克服这个问题的唯一方法吗?因为对于每个 add 函数,都不需要使用 parseInt ,这可能会浪费资源 AFAIK。

标签: javascript

解决方案


HTML Input elements are documented to return a string representing a number.

You can use valueAsNumber to get the actual numerical value.

var startV = document.getElementById("startV").valueAsNumber;
var endV = document.getElementById("endV").valueAsNumber;

You can use parseInt method as:

var startV = parseInt(document.getElementById("startV").valueAsNumber);
var endV = parseInt(document.getElementById("endV").valueAsNumber);

You can use + also:

var startV = parseInt(document.getElementById("startV").valueAsNumber);
var endV = parseInt(document.getElementById("endV").valueAsNumber);
startV = +startV;
endV = +endV;

推荐阅读