2017-10-04 75 views
0

所以,我有一個標籤,我想填寫文本。這個文本在幾個頁面上是相同的,我希望能夠對這個文本進行修改,而不用單獨編輯每個頁面。WebStorage是我最好的選擇嗎?

我可以用JavaScript和WebStorage做到這一點,但它似乎並不是最好的解決方案。有沒有其他辦法可以做到這一點?

我想避免必須爲此使用一個sql服務器。在下面的小提琴中看到我的工作代碼。

工作代碼:

<div id="1"></div> 
<div id="2"></div> 
<div id="3"></div> 
<div id="4"></div> 

<script> 
// Check browser support 
if (typeof(Storage) !== "undefined") { 
    // Store 
    localStorage.setItem("11", "some text1"); 
    localStorage.setItem("22", "some text2"); 
    // Retrieve 
    localStorage.setItem("33", "some text3"); 
    localStorage.setItem("44", "some text4");  



    document.getElementById("1").innerHTML = localStorage.getItem("11"); 
    document.getElementById("2").innerHTML = localStorage.getItem("22"); 
    document.getElementById("3").innerHTML = localStorage.getItem("33"); 
    document.getElementById("4").innerHTML = localStorage.getItem("44"); 
} else { 
    document.getElementById("topptur").innerHTML = "Web Storage er ikke støttet, last ned nyeste versjon av nettleseren din"; 
} 
</script> 

JSFiddle

+0

爲什麼它似乎不是最好的方式? – bhansa

+1

@bhansa有相當多的文本需要存儲,而且在我看來,javascript會變得相當大。你有其他選擇嗎? – Louvre

+0

*「我希望能夠更改此文本而無需單獨輸入每個頁面」*您是指編輯頁面,還是使用*頁面? –

回答

2

你說得對,網絡存儲是不是一個很好的解決方案。

你必須要在至少幾個選項:

  1. 一個server-side include(一個文件,你定義的文本,然後使用服務器端的機制包括它的所有頁面)

  2. ,你鏈接到你想要

  3. 在某一點上的所有網頁,將文本填寫你就可以做一個JavaScript文件客戶端,但尚未

例如,對於它強大的支持,您的JS文件可能是:

document.getElementById("1").innerHTML = "the text for 1"; 
document.getElementById("2").innerHTML = "the text for 2"; 
document.getElementById("3").innerHTML = "the text for 3"; 
document.getElementById("4").innerHTML = "the text for 4"; 

...然後你剛過包括它您想要內容的網頁中的最後一個元素。如果你想要改變內容,只需在JS文件中改變它。

一般來說,#1可能是更好的選擇,至少在#3變得更可行。

+0

現在,您的解決方案#2出色地工作!謝謝! – Louvre

+0

跟進問題。當我使用這個時,div只會被JS中的第一行填充。如果我使用id =「4」,我不會得到任何結果。檢查小提琴,並嘗試將ID更改爲1.然後它可以工作...[小提琴](https://jsfiddle.net/erlendvo/00qag44b/3/) – Louvre

0

如果你要使用相同的文字爲所有的文件,你可以有以下方法

您可以在模板中的數據,並可以在任何地方在項目中使用它,這似乎在這裏更好的選擇。