看不到函数外的Javascript变量
Javascript variable outside a function is not seen
以下代码不起作用,因为var clock_socket
在start
函数之外。这很明显,但为什么呢?我认为,如果函数中不存在其他同名变量,那么外部变量就可以在函数中"看到"。
var clock_socket = document.getElementById("clock");
var start = function(){
var hour = new Date();
clock_socket.innerHTML = hour.toLocaleTimeString();
}
var emp = setInterval(function(){start()},1000);
您在这里看到的并不是您可能认为的函数范围的问题。该函数可以查看您定义的全局变量,但如果DOM尚未完全加载,则不能查看。
为了解决你的问题,试着像这样包装你的函数(如果你使用的是jquery)
jQuery(document).ready(function(){
var clock_socket = document.getElementById("clock");
var start = function(){
var hour = new Date();
clock_socket.innerHTML = hour.toLocaleTimeString();
}
var emp = setInterval(function(){start()},1000);
})
另一种建议是将脚本放在body标记的末尾,或者在文档准备好时调用事件侦听器。
希望这能帮助你
Crhisoh的答案很好,但为了防止您不使用jQuery,请在<head>
中编写代码时尝试以下操作
(function(){
var load, unload;
load = function () {
// setup all your stuff here
};
unload = function () {
// unset or cleanup
};
window.addEventListener('load',load,false);
window.addEventListener('unload',unload,false);
}());
这当然可以改进,但它可以保证在window.onload
事件
相关文章:
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量