2017-10-05 81 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是隱藏的使用。

我希望它能幫助