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

JavaScript中变量num1为何无法正确获取输入框的值?

为啥点击按钮时num1显示0,直接读value却正常?

嘿,这个问题的核心是你给num1赋值的时机太早了,我给你拆解一下:

先看你的代码片段:

var textboxnumber1 = document.querySelector('.number1'); 
var textboxnumber2 = document.querySelector('.number2'); 
var calcbutton = document.querySelector('.calcbutton'); 
// 这里!页面刚加载就把输入框的值赋给num1了
var num1 = Number(textboxnumber1.value); 
var num2 = Number(textboxnumber2.value); 
function writenumbers() { 
    window.alert(num1); 
} 
calcbutton.addEventListener('click', writenumbers);

当页面首次加载完成时,你的输入框.number1里是空的对吧?Number("")的结果就是0,所以num1从一开始就被钉死成0了。之后不管你在输入框里输入什么数字,这个变量都不会自动更新——因为它只在页面加载那一瞬间被赋值了一次,之后就跟输入框的实时状态脱节了。

而当你改成window.alert(Number(textboxnumber1.value))时,是每次点击按钮的瞬间,才去读取输入框当前的内容,这时候拿到的就是你刚输入的最新值,所以能正常显示。

怎么改?

把获取输入值的逻辑挪到点击事件的回调函数里,这样每次点击按钮都会重新读取输入框的实时值:

var textboxnumber1 = document.querySelector('.number1'); 
var textboxnumber2 = document.querySelector('.number2'); 
var calcbutton = document.querySelector('.calcbutton'); 

function writenumbers() { 
    // 每次点击时才获取最新输入值
    var num1 = Number(textboxnumber1.value); 
    var num2 = Number(textboxnumber2.value); 
    window.alert(num1); 
} 

calcbutton.addEventListener('click', writenumbers);

要是你需要在其他函数里也用到num1/num2,也可以先声明变量,在点击时更新:

var textboxnumber1 = document.querySelector('.number1'); 
var textboxnumber2 = document.querySelector('.number2'); 
var calcbutton = document.querySelector('.calcbutton'); 
var num1, num2; // 先声明,不赋值

function writenumbers() { 
    // 点击时更新变量为当前输入值
    num1 = Number(textboxnumber1.value); 
    num2 = Number(textboxnumber2.value); 
    window.alert(num1); 
} 

calcbutton.addEventListener('click', writenumbers);

这样就解决问题啦~

内容的提问来源于stack exchange,提问作者tony9099

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:45:03