2017-09-07 19 views
0

我有一個按鈕使用innerHTML函數將HTML加載到點擊區域。第一次點擊時,它會正確加載HTML,但是如果我更改了數據源,那麼當再次單擊該按鈕時,這些更改都不會反映出來。它只是在第一次點擊按鈕時重新加載準確的HTML。刷新頁面不起作用。如何在每次點擊時正確調用當前數據源?調用的innerHTML函數並不反映點擊數據的變化

按鈕:

<li><button onclick="load_bookings();">Bookings</button></li> 

功能:

function load_bookings() { 
     document.getElementById("content").innerHTML='<object type="text/html" data="bookings_home.html" height=100% width=100%></object>'; 
    } 
+0

您究竟如何更改數據源?通過F12 Developer Tools手動編輯'data'屬性? –

+0

你是什麼意思*「..改變數據源」*,你到底是怎麼做的? – adeneo

+0

在回覆黑曜石和adeneo - 通過「更改數據源」我的意思是,我編輯booking_home.html文件。當我點擊加載它的按鈕時,以及刷新頁面時,這些編輯都不會反映出來。 – vanscurvy

回答

0

它所出現你正在做的是加載一個頁面在object標籤,這是非常不尋常啓動。我認爲你遇到的問題是文件bookings_home.html通過GET請求被請求,並被緩存。如果你想要的文件的新版本,你將需要添加一個「緩存無效」參數的URL /文件名:

document.getElementById("content").innerHTML='<object type="text/html" data="bookings_home.html?_=' + Date.now() + '" height=100% width=100%></object>'; 

當然是最好使用document.createElement()添加標記到頁。

+0

好的 - 我會嘗試使用document.createElement()併發布結果。我一直在使用錯誤類型的java函數的事實可能是爲什麼我沒有找到關於此的許多帖子! – vanscurvy

-1

的index.html:

<!DOCTYPE html> 
<meta charset="utf-8"> 
<ul> 
    <li><button onclick="load_bookings();">Bookings</button></li> 
</ul> 
<div id="content"></div> 
<script> 
    function load_bookings() { 
     document.getElementById('content').innerHTML = '<object type="text/html" data="bookings_home.html" height="100%" width="100%"></object>'; 
    } 
</script> 

bookings_home.html:

<!DOCTYPE html> 
<meta charset="utf-8"> 
<div id="some"></div> 
<script> 
    document.getElementById('some').innerHTML = String(Math.random()); 
</script> 

我測試了它在本地。一切正常。 另外,請注意緩存(答案Sam R)。

+0

你做了什麼工作。 –