更改div类onclick ---并*保存*更改

时间:2011-11-19 01:39:59

标签: javascript css dom

有许多问题询问如何在JavaScript点击处理程序中更改div的类,例如:Change Div style onclick。我明白这一点(只需更改.className),它就可以了。

但是,当我按照从我的页面到其他地方的链接,然后单击后退按钮时,将恢复类名称。 (Safari和Firefox都是正确的,Chrome没有。)在Chrome中,我动态做出的大多数其他更改(例如点击处理程序)也会在我返回页面时恢复(尽管它会记住新插入的新div)。

请注意,当我按“返回”时,Chrome和其他浏览器都没有重新加载页面;他们必须从缓存中取出它。 (我使用ajax更新服务器上的状态,因此当浏览器重新加载页面时它可以正常工作。)

我不是一个真正的网络开发者,所以这有点令人费解。这里的标准做法是什么?我每次更改div时都应该使用history.replaceState()吗?我应该将更改保存在状态变量中,并在每次有popstate事件时重新加载它们吗?我应该删除div并插入一个新的div(包含所有旧div的子节点),而不是更改div类名。

我在这里使用vanilla JavaScript(甚至没有jquery),如果可能的话,我希望保持这种方式。

2 个答案:

答案 0 :(得分:1)

这是可能的,但您需要其他方法来记住它

您可以尝试以下方法之一:

Cookies:这绝对是最好的方式

在网址上传递Vars :示例:www.mywebsite.com?myvar = red。这在使用PHP时会更容易,但在纯JS中仍然可行(但我不推荐)

将其存储在数据库中(完全不建议这样做)

这些只是一些选择,但我不建议将它们用于你想要的东西(如果你重视你想要做的事情的利弊,这是浪费时间和精力)

答案 1 :(得分:0)

您可以在Cookie中保存状态,并在加载页面时将其还原。 您也可以将其保存在服务器端(使用ajax发送状态,更改时)。并在再次请求时将准备好的文档发送给客户。 重新加载页面时,浏览器会忘记所有状态。