You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从HTML数字输入框取值?JS简易计算器问题解决

自制JS简易计算器的问题排查与解决

学习JS一周后,我尝试做个简易计算器检验学习成果,但在获取HTML数字输入框的用户输入值时遇到了问题。

我的HTML代码

<div class="container">
    <input id="first-number" type="number" placeholder="first number">
    <input id="second-number" type="number" placeholder="second number">
    <br /><br />
    <button id="multiplication" onclick="multiply()">Mutliply</button>
    <button id="addition" onclick="addition()">Addition</button>
    <button id="subtraction" onclick="subtraction()">Subtraction</button>
    <button id="divison" onclick="division()">Divison</button>
    <br /><br />
    Your answer is <b><span id="final-answer"></span></b>
</div>

初始JS代码

let firstNumber = document.getElementById("first-number").value;
let secondNumber = document.getElementById("second-number").value;

function multiply() {
    finalAnswser = firstNumber + secondNumber;
    document.getElementById("final-answer").innerHTML = finalAnswser;
    console.log(firstNumber);
};

我先调试multiply函数,原以为其余函数只要换运算符就行,但代码根本跑不起来。注:我还没学.value属性,是谷歌搜的方案,但没用。

第一次修改:将变量声明移至函数内部

把firstNumber和secondNumber的声明移到每个函数里,更新后的JS代码如下:

function multiply() {
    let firstNumber = document.getElementById("first-number").value;
    let secondNumber = document.getElementById("second-number").value;
    finalAnswser = firstNumber * secondNumber;
    document.getElementById("final-answer").innerHTML = finalAnswser;
    console.log(firstNumber);
};

function addition() {
    let firstNumber = document.getElementById("first-number").value;
    let secondNumber = document.getElementById("second-number").value;
    finalAnswser = firstNumber + secondNumber;
    document.getElementById("final-answer").innerHTML = finalAnswser;
    console.log(firstNumber);
};

function subtraction() {
    let firstNumber = document.getElementById("first-number").value;
    let secondNumber = document.getElementById("second-number").value;
    finalAnswser = firstNumber - secondNumber;
    document.getElementById("final-answer").innerHTML = finalAnswser;
    console.log(firstNumber);
};

function division() {
    let firstNumber = document.getElementById("first-number").value;
    let secondNumber = document.getElementById("second-number").value;
    finalAnswser = firstNumber / secondNumber;
    document.getElementById("final-answer").innerHTML = finalAnswser;
    console.log(firstNumber);
};

这次修改后,乘法、除法、减法功能正常,但加法函数把两个输入值当成字符串拼接,而不是数字相加。

第二次修改:用Number()转换输入值

把所有函数内的变量声明换成用Number()转换输入值的写法,问题就解决了。修改后的变量声明代码如下:

let firstNumber = Number(document.getElementById("first-number").value);
let secondNumber = Number(document.getElementById("second-number").value);

内容的提问来源于stack exchange,提问作者Shahzad S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:01:37