尝试在jquery中重置按钮事件中的变量时遇到问题。此变量表示在div中加载的页面。然后使用setInterval函数,我用存储在变量中的页面刷新div元素。 这是代码:
$( document ).ready(function() {
var current_page="data.php"; //For update-the first page shown is data.php
//At startup
$("#content").load("/data.php",function(response){
//current_page="data.php"; The first command-current_page already set to "data.php"
if(response=="0"){
location.href="http://website.com";
}
});
//JS refresh timer
setInterval(function(){
alert(current_page); //Always shows 'data.php'->means it is not updated
if(current_page!="insert.php"){
$("#content").load("/"+current_page,function(response){
if(response=="0"){
location.href="http://website.com";
}
});
}
},5000); //5 seconds
//EVENTS
//Menu links pressed
$(".menu_link").click(function(){
var page=$(this).attr("data-page");
current_page=page; //Here it works.
$("#content").load("/"+page,function(response){
if(response=="0"){
location.href="http://website.com";
}
});
});
});
//Outside Jquery 'document'
//Select user button pressed
function loadData(){
var user_id=$("#menu_selector option:selected").val();
current_page="users.php?user_id="+user_id; //Not globally updated;inside function it is set.
$("#content").load("/users.php?user_id="+user_id,function(response){
if(response=="0"){
location.href="http://website.com";
}
});
}
我通过输入代码“alert”语句测试了current_page的值。结论:在setInterval函数中, current_page 变量始终设置为“data.php”。如果我删除第一行var current_page="data.php";
,则 current_page 为“未定义”。看起来它没有被loadData函数更新。
我也尝试在JQuery加载中移动 loadData 函数,但是按钮找不到它(我使用{{1} })
问题在哪里?
答案 0 :(得分:1)
current_page 变量在函数范围内,该函数作用于该函数。 loadData 中函数外部的行:
current_page="users.php?user_id="+user_id;
实际上将设置另一个变量,仍称为current_page,但在 window 对象上。您应该可以在Chrome开发工具中看到这一点。
如果你需要能够从$()函数外部操作它,你必须用更全局的范围声明它(比如对窗口对象或者创建你自己的命名空间对象)。
答案 1 :(得分:0)
我解决了。正如马克威廉姆斯所写的那样,变量并不足够全球化#34;因此,不是创建命名空间,而是将声明移到jquery代码之外:
var current_page="data.php"; //Moved outside
$( document ).ready(function() {
//At startup
$("#content").load("/data.php",function(response){
//current_page="data.php"; The first command-current_page already set to "data.php"
if(response=="0"){
location.href="http://website.com";
}
});
//JS refresh timer
setInterval(function(){
alert(current_page); //Always shows 'data.php'->means it is not updated
if(current_page!="insert.php"){
$("#content").load("/"+current_page,function(response){
if(response=="0"){
location.href="http://website.com";
}
});
}
},5000); //5 seconds
//EVENTS
//Menu links pressed
$(".menu_link").click(function(){
var page=$(this).attr("data-page");
current_page=page; //Here it works.
$("#content").load("/"+page,function(response){
if(response=="0"){
location.href="http://website.com";
}
});
});
});
//Outside Jquery 'document'
//Select user button pressed
function loadData(){
var user_id=$("#menu_selector option:selected").val();
current_page="users.php?user_id="+user_id; //Not globally updated;inside function it is set.
$("#content").load("/users.php?user_id="+user_id,function(response){
if(response=="0"){
location.href="http://website.com";
}
});