无法从函数外的输入表单中检索值

时间:2017-09-11 11:49:31

标签: javascript

我最近在HTML中创建了一个输入框

<input type="number" id="aa" onchange="yy()">
<p id="xx"></p>

然后我调用了以下代码:

var gg = document.getElementById("aa").value;
function yy(){
document.getElementById("xx").innerHTML=(gg);

什么也没出现。 但是,如果我将脚本更改为

function yy(){
    gg = document.getElementById("aa").value;
    document.getElementById("xx").innerHTML=(gg);
}

它奏效了!
我想如果我首先声明变量'gg'(全局),我可以在'yy'函数中使用它们。
任何人都可以帮助我描述这件事。
非常感谢你。

2 个答案:

答案 0 :(得分:0)

您仍然可以在gg功能中使用yy。但这里的问题是你在gg内的价值。因为你打电话

var gg = document.getElementById("aa").value;

在页面加载时,输入元素没有任何值,因此gg的值始终为空。现在,当您更改id="aa"的值时,您使用gg的值为innerHTML并且您总是空白。现在,唯一的解决方法是,由于您的innerHTML取决于gg的值(对于id为aa的输入),您必须在change()函数中包含此值才能获得正确的输出。因此,原因不是您无法访问或获取全局变量的值 - 您可以,但在这种情况下,该值的值不正确。

为了正确验证和理解,这里有一个已经指定id='aa'值的示例,然后当您更改输入时,您会看到gg的值:

&#13;
&#13;
var gg = document.getElementById("aa").value;
function yy(){
  document.getElementById("xx").innerHTML=(gg);
}
&#13;
<input type="number" id="aa" onchange="yy()" value='123'>
<p id="xx"></p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

那是因为你没有将值放在函数中。现在function predicDia(e,a){ mapDimecres.invalidateSize(true); 将始终保持初始值。哪个页面加载为空。

将其放入功能中。一旦函数被触发,就会检索该值。在您的情况下,您在其上添加了var gg触发器。

因此,当值更改时,函数将在此时运行,并检索输入字段内的值。

如果您要求,您只能得到一些东西或者在这种情况下 只有在某些事情要求时,JavaScript才能获得某些内容

在第一种情况下你的功能不会要求一个值。在您的秒钟情况下,onchange会询问元素JavaScript

value