javascript - javascript 仅在我添加第二个 getElementbyId 时才连接数字
问题描述
请不要将此标记为重复。它与以下类似,但不一样。
我看过:
Javascript连接数字,而不是相加 和: 如何添加两个字符串,就好像它们是数字一样? 和: innerHTML 返回带有文本的 NaN
这是我的代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>My Web Page</title>
<form action="PayslipServlet" method="get">
First Number: <input type="text" name="n1" id="n1"><br/>
Second Number: <input type="text" name="n2" id="n2"><br/>
Sum: <span id="Sum"></span>
<br>
<input type="button" value="Submit" onClick="pr()">
</form>
<script>
function pr() {
var foobar = 100;
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value ; works -->
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n2').value ; works -->
<!-- works -->
<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +foobar ; -->
<!-- concatenates as strings: why? -->
document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +document.getElementById('n2').value ;
}
</script>
</head>
问题陈述:
当我将 n1 反馈给 sum 时,有效(请参阅注释行) 当我将 n2 反馈给 sum 时,有效 当我将 n1+foobar 反馈给 sum 时,有效
但是,当我将 n1+n2 反馈给 sum 时,我得到一个串联的字符串(例如 1+2 变为 12,而不是 3)。
我究竟做错了什么?
谢谢!
解决方案
您需要在添加它们之前将这两个值转换为数字,因此您将获得加法而不是连接。
document.getElementById("Sum").innerHTML = +document.getElementById('n1').value + +document.getElementById('n2').value ;
推荐阅读
- c# - 使组件以负边距消失
- java - Android同时移动GraphView和播放MediaPlayer
- c++ - Qt 3d c++ 动画
- java - findViewById 在 android studio 的服务类中不起作用
- c++ - 在 makefile 中设置 GCC 路径
- angular - 无法使用 Firestore 解析数据
- qt - 使用 QXmlStreamReader qt 解析 xml Qstring
- android - 如何在不丢失数据的情况下返回我的父活动?
- sql - 如何编写查询以从链接到其他表的表中获取信息,然后链接到其他表并链接到其他表
- javascript - React - 搜索组件以过滤数组