我目前正在研究一个用于学习目的的计算器,一切都在某种程度上有效,但不是我想要的方式。
以下是代码的累加部分:
HTML:
<input type="number" id="int1" />
<input type="number" id="int2" />
<input type="button" onClick="sumOf();" />
<div id="result"></div> // To display the result
JS:
var int1 = document.getElementById("int1").value;
var int1 = document.getElementById("int2").value;
var result = document.getElementById("result");
function sumOf(int1, int2) {
result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
现在的方式,如果我通过onClick事件调用该函数,它将导致NaN。检查int的类型结果为'undefined'。所以我把变量放在函数中,它工作正常,因为现在函数可以到达它们。
我的问题是如何才能访问函数之外的变量?我尝试创建一个对象,但是在onClick事件中引用对象内部的正确函数时遇到了问题,我尝试了“objectName.functionInsideTheObject();”。结果是没有用。
我该如何使这项工作?将为其他计算添加新函数,并且始终复制粘贴变量非常繁琐。
修改
我的问题与变量声明中的“.value”有关。如果我声明一个变量:
var int1 = document.getElementById("int1"); // Not getting the value directly
var int2 = document.getElementById("int2");
然后引用函数内部变量的值,如下所示:
function sumOf() {
result.innerHTML = parseFloat(int1.value) + parseFloat(int2.value);
}
工作正常。我不知道为什么.value在全局范围内不起作用。仍然不完美,但不那么乏味。
答案 0 :(得分:1)
我相信如果你这样创建:
int1 = document.getElementById("int1").value;
没有var它然后是全局的。
答案 1 :(得分:1)
您声明变量的方式是正确的。
这些变量是NaN,因为你将它们填充为函数中的Arguments
function sumOf(int1, int2) {
result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
你应该像
一样调用这个函数function sumOf() {
result.innerHTML = parseFloat(int1) + parseFloat(int2);
}
但是如果你声明你的功能
,我认为会更好function sumOf() {
var int1 = document.getElementById("int1").value;
var int1 = document.getElementById("int2").value;
var result = document.getElementById("result");
result.innerHTML = parseFloat(int1) + parseFloat(int2);
}