2017-10-04 40 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

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

您可以在模板中的数据,并可以在任何地方在项目中使用它,这似乎在这里更好的选择。