2017-10-05 87 views
0

我想在打开时自动刷新可折叠的内容。我怎么能管理它?打开后自动刷新可折叠的内容

我有向下跌破此代码:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
</head> 
 
<body> 
 

 
<div class="container"> 
 
    <a href="#demo" class="btn btn-info" data-toggle="collapse">Read more</a> 
 
    <div id="demo" class="collapse"> 
 
    This needs to be refreshed everytime it shows up. 
 
    </div> 
 
</div> 
 

 
</body> 
 
</html>

回答

1

要做到这一点,你需要使用AJAX,异步JavaScript和XML。

如果可能,请创建一个单独的页面collapsable.html,其中仅包含可折叠div的内容。

然后,添加一个事件监听器到按钮。

document.querySelector("a[data-toggle='collapse']").addEventListener("click", function() { 
    output("Refreshing content..."); 
    var xmlhttp = new XMLHttpRequest(); // AJAX 
    xmlhttp.open("GET", "collapse.html"); // Replace with your filename here 
    xmlhttp.onreadystatechange = function() { 
     if(xmlhttp.readyState === 4) { // If finished loading 
      if(xmlhttp.status === 200) { // If loaded correctly 
       output(xmlhttp.responseText); 
      } else { 
       output("Error loading content -- check your internet connection"); 
     } 
    } 
    xmlhttp.send(); 
}); 

你需要定义output,这是我用来设置div的内容。

目前,它将覆盖内容为“刷新内容...”,使用AJAX进行互联网请求,然后如果一切顺利,则用实际内容替换“加载”。如果您不想在加载时覆盖现有内容,则可以删除output("Refreshing content...")行。

function output(content) { 
    document.querySelector("#demo").innerHTML = content; 
} 

您还可以使用AJAX再次加载整个页面,但是您可能需要解析响应数据。

了解更多关于AJAX - https://developer.mozilla.org/en-US/docs/AJAX

+0

有没有简单的解决方案?因为我正在开发一个商店软件,所以我只能使用Javascript,HTML和CSS。实际上,每当可折叠触发时需要重新加载的内容是商店软件的变量 –

+0

这很简单...它是加载内容的标准方式,并且它只使用Javascript和HTML ... – Max

+0

这只是长。如果你不明白部分代码,请不要问。 :) – Max

2

如果要触发就在演出过程中启动,您可以使用show.bs.collapse事件刷新...

$('#demo').on('show.bs.collapse', function() { 
    // Put here your code for refreshing the div content (ajax call, etc.) 
}); 

如果要在div完全可见时(转换已完成)触发刷新,则您有shown.bs.collapse事件......

$('#demo').on('shown.bs.collapse', function() { 
    // Put here your code for refreshing the div content (ajax call, etc.) 
}); 

在你需要它时,你有相当的事件hide.bs.collapsehidden.bs.collapse当DIV是隐藏的使用。

我希望它能帮助