无法访问全局变量(Javascript)
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
。
这个特定的代码可能在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
和id
属性实际上用于不同的目的。
我最近在服务器端脚本中遇到了类似的问题。
这是因为我使用var重新声明了函数内部的变量。 摆脱var修复了这个问题。
试试这个链接,它可能会有帮助:
如果将以下内容作为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
链接地址: http://www.djcxy.com/p/88043.html