Javascript 为什么在函数中访问一个全局变量时,我将其赋值为数字输入标记的值,并将其解析为字符串?

Javascript 为什么在函数中访问一个全局变量时,我将其赋值为数字输入标记的值,并将其解析为字符串?,javascript,html,string,numbers,Javascript,Html,String,Numbers,我是javascript的新手,我正在制作一个带有两个数字输入标签的小型网络计算器。我将输入的“type”属性设置为“=number”,现在我希望当用户单击add按钮时,他/她获得输出。 但问题是,当我全局声明任何包含输入值(安全地包含在“parseInt”中)的变量,并在函数中访问该变量时,它被解析为字符串(即使在使用parseInt之后) 我试着在函数中声明变量,它工作得很好,我的意思是它只被解析为一个数字。 但问题是,我不能在evry函数中重复为add、sub、divide……等分配变量,

我是javascript的新手,我正在制作一个带有两个数字输入标签的小型网络计算器。我将输入的“type”属性设置为“=number”,现在我希望当用户单击add按钮时,他/她获得输出。 但问题是,当我全局声明任何包含输入值(安全地包含在“parseInt”中)的变量,并在函数中访问该变量时,它被解析为字符串(即使在使用parseInt之后)

我试着在函数中声明变量,它工作得很好,我的意思是它只被解析为一个数字。 但问题是,我不能在evry函数中重复为add、sub、divide……等分配变量,因为ode将变得又长又重

请帮助我,并告诉我如何在全球范围内声明var,但作为一个数字

var值1、值2;
value1=parseInt(document.getElementById(“value1”).value);
value2=parseInt(document.getElementById(“value2”).value);
函数add(){
添加=值1+值2;
document.getElementById(“输出”).innerHTML=已添加;
}
第一个编号:
第二个编号:

添加
输出:
您可以将变量赋值移动到函数内部,这样每次设置函数时都会设置变量赋值,而不必从HTML端传递变量赋值:

函数添加(){
var value1=parseInt(document.getElementById(“value1”).value);
var value2=parseInt(document.getElementById(“value2”).value);
增加的风险值=价值1+价值2;
document.getElementById(“输出”).innerHTML=已添加;
}
第一个编号:
第二个编号:

添加
输出:
在这里您可以看到解决了全局变量问题的方法

var值1、值2;
函数add(){
value1=parseInt(document.getElementById(“value1”).value);
value2=parseInt(document.getElementById(“value2”).value);
如果(值1和值2){
添加=值1+值2;
document.getElementById(“输出”).innerHTML=已添加;
checkGlobalVal();
}否则{
log('请给出输入值');
}
}
函数checkGlobalVal(){
log('value1:',value1',value2:',value2);
}
第一个编号:
第二个编号:

添加
输出:
您正在pageload上检索
value1
value2
,但它们尚未输入。而是在处理程序中检索它们,一旦输入被填充,您就不会将值传递给add()函数。为什么您认为全局变量和字符串与问题有关?@CertainPerformance我不明白,兄弟。一旦输入被填充,我如何在处理程序中检索它们?@deceze,因为显然,当我全局声明变量时,输出是NaN。但是当我在函数中声明它们时,它工作得很好,我不知道为什么!但是如果我有10个以上的函数来解决不同的算术问题,我就必须在每个函数中声明这些变量,不是很长吗?你可能会认为它很长,但从长远来看它是不可行的。如果将变量保留在原来的位置,则无法更新或访问新值。如果您想解决冗长的代码,请查看jquery。没问题。如果您遇到任何其他问题,请让我知道,并随时将答案标记为已解决。