无法访问全局变量(Javascript)
Posted
技术标签:
【中文标题】无法访问全局变量(Javascript)【英文标题】:Can't access global variables (Javascript) 【发布时间】:2014-01-17 01:59:34 【问题描述】:var hours = document.getElementById("hrs").value; // Global variables declared
var mins = document.getElementById("min").value;
var seconds = document.getElementById("sec").value;
function random()
alert(hours);
alert(mins);
alert(seconds);
在所有 3 种情况下,输出结果为 undefined
。
【问题讨论】:
您是否尝试在函数 random 之外提醒(小时)?如果是,结果如何? 我们可以使用 this.mins 还是 this.hours?因为我在backbone.js中这样使用我不知道我们是否也可以在javascript中这样使用?请检查 看来一切正常!您能否确保正确设置了hrs
、min
和sec
html 元素?应该是这样的<input type='text' id='hrs' />
HTML 部分我检查了好几次,看起来都很好。
【参考方案1】:
此特定代码可能位于 HTML 文件的主体中,并且此代码在创建特定 HTML 元素之前执行。因此,值undefined
被分配给这些值。
因此,您可能希望在函数本身内移动赋值部分。
var hours, mins, seconds;
function random()
hours = document.getElementById("hrs").value;
mins = document.getElementById("min").value;
seconds = document.getElementById("sec").value;
alert(hours);
alert(mins);
alert(seconds);
注意 1: 通常,如果您不使用 jQuery 之类的库,则将这样的代码放在 onload
中。这就是 MDN 不得不说的,when onload is triggered
加载事件在文档加载过程结束时触发。在 此时,文档中的所有对象都在 DOM 中,并且所有 图像和子帧已完成加载。
因此,如果您从 HTML 元素中获取值,您可能需要确保我们仅在 HTML 文档加载完成后才从它们中获取值。
注意2:除此之外,您可能需要检查您是否真的正确设置了hrs
、min
和sec
的HTML 元素的id
。 name
and id
attributes are actually used for different purposes.
【讨论】:
谢谢!!我能够修复它,你正在写关于那个 onload 事件。【参考方案2】:我最近在服务器端脚本上遇到了类似的问题。
这是因为我在函数内部使用 var 重新声明了变量。摆脱 var 解决了这个问题。
【讨论】:
我的问题就是这种情况。谢谢。【参考方案3】:试试这个链接,它可能会有所帮助:
你知道如果以下作为 JavaScript 程序执行,会提示什么值吗?
var foo = 1;
function bar()
if (!foo)
var foo = 10;
alert(foo);
bar();
如果你对答案是“10”感到惊讶,那么这个答案可能真的会让你陷入困境:
var a = 1;
function b()
a = 10;
return;
function a()
b();
alert(a);
http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
【讨论】:
【参考方案4】:很容易实现您的示例,如下所示:
var hours = document.getElementById("hrs").value; // Global variables declared
var mins = document.getElementById("min").value;
var seconds = document.getElementById("sec").value;
function random()
alert(hours + mins + seconds);
<input type="text" id="hrs" value="9" />
<input type="text" id="min" value=":30" />
<input type="text" id="sec" value=":25" />
<input type="button" id="submit" value="GetDetails" onclick="random();">
【讨论】:
以上是关于无法访问全局变量(Javascript)的主要内容,如果未能解决你的问题,请参考以下文章
Selenium Web 驱动程序可以访问 javascript 全局变量吗?
在 typescript/javascript 的 google.maps.Geocoder().geocode() 上使用全局变量