即使在更新DIV之后,Javascript函数也会继续执行
我在该Id上使用ajax更新了某些内容,例如,假设我有一个完整的主页,在即使在更新DIV之后,Javascript函数也会继续执行,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我在该Id上使用ajax更新了某些内容,例如,假设我有一个完整的主页,在正文中我有以下代码: <div id="content"> <button onclick="update1()"></button> <button onclick="update2()"></button> </div> <script> function update1(){
正文中我有以下代码:
<div id="content">
<button onclick="update1()"></button>
<button onclick="update2()"></button>
</div>
<script>
function update1(){
$.ajax({
url:"Page1/index.html",
type:'GET',
success: function(data){
$('#content').html((data));
}
});
}
function update2(){
$.ajax({
url:"Page2/index.html",
type:'GET',
success: function(data){
$('#content').html((data));
}
});
}
</script>
<script src="js/script.js"></script>
第2页的index.html
包含如下代码:
<button onclick="update1()"></button>
<button onclick="update2()"></button>
<div id="page1"> .....</div>
<button onclick="update1()"></button>
<button onclick="update2()"></button>
<div id="page2"> .....</div>
$(document).ready(
function() {
setInterval(function() {
$.ajax({
url: "someapi",
type: "POST",
dataType: "json",
success: function (result) {
console.log(result)
}
});
}, 2000);
});
$(document).ready(function() {
var the_interval = setInterval(function() {
$.ajax({
url: "someapi",
type: "POST",
dataType: "json",
success: function (result) {
console.log(result)
}
});
}, 2000);
function stopTheInterval(){
clearInterval(the_interval);
}
function update1(){
$.ajax({
url:"Page1/index.html",
type:'GET',
success: function(data){
$('#content').html((data));
}
});
}
function update2(){
$.ajax({
url:"Page2/index.html",
type:'GET',
success: function(data){
$('#content').html((data));
stopTheInterval(); // we stop the first interval
}
});
}});
我想做的是,当按下按钮调用Ajax,从Page1获取index.html并将其放入id内容中时,运行script.js
此脚本仅在idPage1存在时执行,我从中发现了这个技巧,通过使用if和jQuery,例如if($(“#Page1')。长度){my sj code}
javascript代码仅在该id存在时运行,但不幸的是,当我单击按钮获取另一个id为Page2的Page2代码继续运行时,有没有办法在该div更新时停止此js代码???尝试使用update1().stop()
在update2
函数的启动中script.js
不要使用设置间隔。
function some_function(){
$.ajax({
url: "someapi",
type: "POST",
dataType: "json",
success: function (result) {
console.log(result)
}
});
}
并在update1.0中调用上述函数,因为只有在更新page1时才需要它
函数update1(){
$.ajax({
url:“Page1/index.html”,
类型:'GET',
成功:功能(数据){
$('#content').html((数据));
some_function()//在这里调用函数
}
});
}
函数update2(){
$.ajax({
url:“Page2/index.html”,
类型:'GET',
成功:功能(数据){
$('#content').html((数据));
}
});
}
函数没有停止,因为除非您使用clearInterval()
函数清除间隔,否则间隔将不会停止触发
只需将所有JS代码放在一个文件中,如下所示:
<button onclick="update1()"></button>
<button onclick="update2()"></button>
<div id="page1"> .....</div>
<button onclick="update1()"></button>
<button onclick="update2()"></button>
<div id="page2"> .....</div>
$(document).ready(
function() {
setInterval(function() {
$.ajax({
url: "someapi",
type: "POST",
dataType: "json",
success: function (result) {
console.log(result)
}
});
}, 2000);
});
$(document).ready(function() {
var the_interval = setInterval(function() {
$.ajax({
url: "someapi",
type: "POST",
dataType: "json",
success: function (result) {
console.log(result)
}
});
}, 2000);
function stopTheInterval(){
clearInterval(the_interval);
}
function update1(){
$.ajax({
url:"Page1/index.html",
type:'GET',
success: function(data){
$('#content').html((data));
}
});
}
function update2(){
$.ajax({
url:"Page2/index.html",
type:'GET',
success: function(data){
$('#content').html((data));
stopTheInterval(); // we stop the first interval
}
});
}});
我在这里做的是将区间数保存在一个变量中,并创建一个新函数来清除它。
接下来,我所做的就是将我的新函数放入update2()函数中,所以一旦我得到数据,我就清除间隔并停止重复函数。你的问题不清楚“代码继续运行”是什么意思?我用我能用的最简单的方式写了它..当你点击
它会无限期执行吗?在你的函数update2
中,在ajax调用之前,确保你删除#page1
如果它存在。也许如果($('#page1').length){$('#page1').remove()}
setInterval是我应用程序中的所有内容,我需要不断检查是否有更改,如果没有它,任何事情都不会起作用,我只提供了一些示例,如果我将超过2000行的代码放入机密文件中,这是不值得的,谢谢大家,我会想出一些办法的。谢谢大家,这更接近于我问题的解决方案。没问题这很有帮助。