Javascript 和 JQuery dom 全局变量范围
Javascript and JQuery Dom Global Variable Scope
我对代码中变量的作用域有问题
var ButtonPressed; //global SCOPE
$(document).ready(function()
{
function messageAlert()
{
$('#buttons').append('<input type="button" id="btn" value="Clickme" />');
return false;
}
messageAlert();
$('#btn').on("click", function()
{
ButtonPressed = 1;
});
}); //end document
//// UNDEFINED NOT WORKING
if (ButtonPressed === 1)
{
alert(ButtonPressed);
}
我尝试了有关范围教程的所有内容,但我无法显示变量ButtonPressed=1
全局。
有什么帮助吗?
您将单击事件绑定到按钮#btn
以设置全局变量ButtonPressed
,除非您单击该按钮,否则不会触发该变量。
当您的代码执行并到达块(在全局范围内)时,知道该按钮尚未被单击
if (ButtonPressed === 1)
{
alert(ButtonPressed);
}
不会设置变量ButtonPressed
,因为您尚未单击该按钮,因此它不会发出任何消息警报。
换句话说,if 语句在单击处理程序之前运行
解释你的代码。 执行是这样进行的 ( 1
) --> ( 2 ) --> ( 3 ) var ButtonPressed; // executed as soon as the script tag is hit -- ( 1 )
$(document).ready(function()
{
//...... //executed ONLY AFTER the DOM is ready - (3 )
});
if (ButtonPressed === 1) //executed as soon as the script tag is hit - ( 2 )
{
alert(ButtonPressed);
}
如注释所示,首先执行var ButtonPressed
,然后执行跳到if
检查。只有在 DOM 完全准备就绪后,$(document).ready
中的代码块才会执行。
所以这意味着所有的全局范围代码将首先被执行,然后一个在文档中准备好
。1)如果您的目的是在单击按钮时显示警报,请执行此操作
$('#btn').on("click", function()
{
ButtonPressed = 1;
alert(ButtonPressed);
// do all the stuff that should happen when a button is clicked
});
2)否则,如果您的目的是检查是否单击了按钮? 那么你可以使用setInterval
.使用它,您可以检查是否每 1 秒单击一个按钮。 如下所示。
var checkButtonStatus = setInterval(function(){
if (ButtonPressed === 1)
{
alert(ButtonPressed);
//do all your stuff as the button was clicked
clearInterval(checkButtonStatus ); // remove interval as you don't need to check again.
}
}, 1000);
注: I would say option 2 is not efficient way of doing it, Go for option 1
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- Javascript 和 JQuery dom 全局变量范围
- 与javascript全局变量范围和更新混淆
- Javascript - 全局变量和全局范围内的变量是否不同(在 jsfiddle 中)
- 由全局范围内的 Web 应用程序声明的全局变量
- JavaScript 范围和全局变量
- javascript全局变量范围
- 具有动态创建元素的事件处理程序的全局变量范围
- 没有全局变量的变量范围和共享信息
- 全局变量的属性范围
- 如何在另一个Javascript范围内调用全局变量
- JavaScript沙箱:在给定范围内隐藏全局变量
- 是node.js服务器范围内的全局变量,还是只针对该会话或用户
- 如何在Angular2中触发一个应用范围的事件或者观察一个全局变量?
- 如何将 javascript 函数锁定到本地范围?我想阻止它使用全局变量
- Jquery 全局变量范围/错误值
- 全局变量在函数范围内是未定义的
- javascript vs jQuery自定义/全局变量范围
- 模块范围内的全局变量