javascript - 当 div 显示在上一个 HTML 页面上时,它如何在下一个 HTML 页面上保持显示显示?
问题描述
在 20 个 HTML 页面中的每一个中,我都有这个 div 元素,它具有当前显示的不同内容:none;。我使用 javascript 来显示或隐藏 div。在其中一个 HTML 页面上,我可以显示这个 div(变为显示:块),并且我有一个按钮,允许我单击下一个 div(下一个 HTML 页面)和上一个 div(上一个 HTML 页面)。我在这里遇到的问题是下一页将重新加载,它将显示 div 为 display: none 当我真的希望它显示时:块,因为前一个 HTML 页面显示了 div(是 display: 块)。
我正在考虑的一种方法是,当我在其中一个 HTML 页面上单击显示 div(显示:块)时,其他 19 个页面将共同显示:块,直到我隐藏 div(显示:无)。理想情况下,我想要这种方法。
我一直在阅读的另一种方法是将站点的数据保存在 localStorage 或 cookie 中。所以下一页可以加载该数据并使 div 显示:块。我不明白这一点,我不知道解决我遇到的问题是否有意义。
这是我目前拥有的:
HTML:
<! -- omitted HTML code above and below this div -->
<div id="container">
<a name="index"></a>
<a href="pgs/35.html#35" >
<div class="button-fullscreen display-left-fullscreen">
<div id="arrow-left-fullscreen"></div>
</div>
</a>
<a href="pgs/1.html#1" >
<div class="button-fullscreen display-right-fullscreen">
<div id="arrow-right-fullscreen"></div>
</div>
</a>
<img id="artwork-fullscreen" src="img/team1.jpg" />
<img id="fullscreen-exit" onclick="openFullscreen()" src="img/fullscreen_exit-white-24dp.svg">
</div>
Javascript:
function openFullscreen() {
var x = document.getElementById("container");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
解决方案
我可以考虑两种解决方案。您可以将 GET 参数添加到 URL 并在 javascript 中读取它以确定该元素是否应该被阻止。所以,你的 URL 可能看起来像这样:http://example.com/?block=true
只是一个快速而肮脏的例子,它可以得到一个想法:
var test;
const queryString = window.location.search;
queryString.split("?").map(function(elem){ test = elem.split("=") });
当然,您还应该检查参数是否存在。如果不是,则不应显示它。
或者,如您所说,您可以使用 localStorage 来存储此值。像这样的东西。
if(!!localStorage.getItem('isBlock')){
element.setAttribute('style', 'display: block;');
}else{
element.setAttribute('style', 'display: none;');
}
function onButtonClick(){
localStorage.setItem('isBlock', 'true');
}
这里!!localStorage.getItem('isBlock')
有两个目的。它检查该值是否为真或是否为空。所以!!(true)
结果为真,而!!(false)
结果!!null
为假。
这里的问题是你不知道前一页的状态。因此,当您单击按钮进入上一页时,上一页并不知道您将按钮更改为阻止。因此,您需要将应用程序的状态存储在某处。URL 或 localStorage 通常是您执行此类操作的地方。
推荐阅读
- arrays - 如何从大数组中绘制图表?
- php - 将一个函数中的变量用于同一控制器中的另一个函数
- nuxt.js - nuxt i18n 号码本地化
- c# - 当调用递归泛型接口上的扩展方法时,结构实例是否会被装箱?
- ios - 将 UISwitch 添加到 tableviewCell 的字幕样式
- css - 如何更改点击图片的id
- postgresql - postgis:两个地理位置之间的 ST_Distance。语法错误
- java - if 语句检查数组是否为空或空,不起作用
- c# - 如何在 C++ 的构造函数和方法中正确使用接口?
- amazon-web-services - AWS 控制台和请求上下文