javascript - 添加数字随机连接为字符串而不是数值
问题描述
我写了一个简单的函数来分别添加奇数和偶数,在给定的两个数字之间
这是我的代码:
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
- 为什么javascript有这种行为?
- 我知道我可以
parseInt
明确使用。但这是克服这个问题的唯一方法吗?因为对于每个 add 函数,都不需要使用 parseInt ,这可能会浪费资源 AFAIK。
解决方案
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;
推荐阅读
- javascript - 我在显示 svg 矩形时遇到问题
- react-native - React-native bundler 卡住了
- c# - 如何让消费者应用程序在 .net 核心中保持活力
- c# - 方法中返回 HttpStatus 代码返回 Task
- >
- php - 如何将此具有多个 ors 的查询转换为 eloquent 格式?
- c++ - 禁用 GCC 5.4.0 和 RelWithDebInfo 构建类型的编译器优化
- php - PHP:无法在网页的表格中显示 csv 文件的数据
- java - 如何使用任意类型的键为通用二叉搜索树验证定义通用值范围(包括开放范围)
- java - 方法打印不正确
- python - 在这种情况下,Python 如何避免无限递归?