2016-09-28 153 views
0

我试图让页面“刷新”异步(我正在刷新包含部分视图的div元素),而var edit = true。当我点击我的按钮有类:btn时编辑被改变。我想知道我应该把我的代码放在哪里。while循环中每隔n秒刷新一次异步页面

我应该把我的while循环在我的$(document).ready中吗? 我很失落,因为这对我来说都是陌生的。

这是我的代码:

var edit = true; 

while(edit){ 
    window.setInterval(function(){ 
     alert('5 seconds'); 
    }, 5000); 
} 

$(document).on('click','.btn', function(){ 
    if(edit ? edit = false : true); 
} 
+0

我会更新我的问题 – Roy123

+0

什么都有'如果(编辑编辑=假:真);'用你的问题吗?即使是“警报”也没有任何关系。事实上,我没有看到这些代码与你的问题有什么关系? – trincot

+0

另外,您的代码中有MVC,但问题没有引用该代码。你在使用Angular还是类似的东西? – isherwood

回答

2

你不需要while为连续刷新。无论何时单击按钮并在下次单击时重新启动它,只需使用clearInterval即可。

var interval, i = 0; 
 

 
$('button').click(function() { 
 
    if(interval) { 
 
     interval = clearInterval(interval); 
 
    } 
 
    else { 
 
     interval = setInterval(function() { 
 
      console.log(++i); 
 
     }, 1000); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button>start/stop</button>

可以编辑您的意见,直接启动的时间间隔我会把它封装到一个函数并使用它。也许在某种程度上是这样的:

var interval, i = 0; 
 

 
function startInterval() { 
 
    if(!interval) { 
 
     interval = setInterval(function() { 
 
      console.log(++i); 
 
     }, 1000); 
 
    } 
 

 
    return interval; 
 
} 
 

 
// start on document load 
 
$(startInterval); 
 

 
// start/stop on button click 
 
$('button').click(function() { 
 
    interval = interval ? clearInterval(interval) : startInterval(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button>start/stop</button>

+0

该按钮的作品,谢谢!在这段代码中间隔第一次点击按钮时返回true,我可以复制'interval = setInterval(function(){ console.log(++ i); },1000);'到我的'$ (document).ready'来加载页面后启动计时器,然后我的按钮仍然可以工作吗? – Roy123

+1

我已经添加了一个页面加载开始的示例@Roy_Dorsthorst – eisbehr

+0

似乎是一旦你多次点击它的buggy – Roy123

0

下面将刷新页面每隔一段时间(例如:30秒)

<head> 
<meta http-equiv="refresh" content="30"> 
... 
</head> 
+0

我不认为OP在询问整页刷新问题。 – isherwood

+0

对不起,我的问题还不够清楚,我的错。我试图刷新当前视图中div元素内的局部视图。 – Roy123