繁体   English   中英

访问私有函数中的全局(javascript)变量

[英]Accessing global(javascript) variables in a private function

我目前正在研究一个用于学习目的的计算器,一切都在某种程度上有效,但不是我希望它的方式。

这是代码的累加部分:

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在全局范围内不起作用。 仍然不完美,但不那么乏味。

我相信如果你这样创建它:

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

如果没有var它就是全局的。

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

并且这些变量是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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM