0

我目前正在开发一个用于学习目的的计算器,并且在某种程度上,一切都有效,但不是我想要的方式。

这是代码的加法部分:

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 的类型会导致“未定义”。所以我将变量放在函数中,它工作正常,因为现在函数可以访问它们。

我的问题是我怎样才能访问函数之外的变量?我尝试创建一个对象,但在 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 在全球范围内不起作用。仍然不完美,但不那么乏味。

4

2 回答 2

1

I believe that if you create it like this:

int1 = document.getElementById("int1").value;

without the var it's then a global.

于 2012-12-06T10:34:34.743 回答
1

您声明变量的方式是正确的。

这些变量是 NaN ,因为您再次将它们填充为函数中的参数

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);
}
于 2012-12-06T10:37:57.230 回答