即使在页面刷新时也会在 div onclick 中保持背景颜色?
Keeping background colour in div onclick even on page refresh?
点击后我把div的背景颜色改成了黄色,但是页面刷新后,颜色没有变化了。
这是我使用的代码:
function selected(item) {
this.clear();
item.style.backgroundColor = 'yellow';
}
function clear() {
for(var i=0; i < divItems.length; i++) {
var item = divItems[i];
item.style.backgroundColor = 'white';
}
}
</script>
<h2>
<b>Seminare nach Standort filtern</b></h2>
<div id="nav">
<div class="link" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Ulm" style="background-color: white;">Ulm</div>
</div>
我尝试使用 localStorage,但我不知道如何在此处应用它。
也许像 localStorage.setItem("item.style.backgroundColor", 'yellow');
这样的东西,但仅此是不行的
完整代码如下:
<style>
#sideNavBox {display:none}
#contentBox {margin-left:0px}
#nav {
display: flex;
flex-wrap: wrap;
flex: 1 1 0px
}
.link {
max-width: 150px;
padding: 3px;
margin: 10px;
border: 2px solid lime;
border-radius: 15px;
flex-basis: 100%;
text-align: center;
cursor: pointer;
}
.active {
background-color: lime
}
.dd13:hover { cursor: pointer; }
.dd13 {
color: #FFFFFF;
Font: 12px Arial
background-color:: #48A040;
Padding: 3px 3px 3px 3px;
}
#pageStatusBar{
display:none!important;
}
</style><script>
window.addEventListener("load", function() {
document.getElementById("nav").addEventListener("click", function(e) {
if (e.target.classList.contains("link")) {
location = e.target.getAttribute("data-link"); // or openLink(e.target.getAttribute("data-link"))
}
})
})
var divItems = document.getElementsByClassName("link");
function selected(item) {
this.clear();
item.style.backgroundColor = 'yellow';
}
function clear() {
for(var i=0; i < divItems.length; i++) {
var item = divItems[i];
item.style.backgroundColor = 'white';
}
}
</script>
<h2>
<b>Seminare nach Standort filtern</b></h2>
<div id="nav">
<div class="link" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Ulm" style="background-color: white;">Ulm</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Taufkirchen" style="background-color: white;">Taufkirchen<br/></div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Oberkochen" style="background-color: white;">Oberkochen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Köln" style="background-color: white;">Köln</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Friedrichshafen" style="background-color: white;">Friedrichshafen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Wetzlar" style="background-color: white;">Wetzlar</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Kiel" style="background-color: white;">Kiel<br/></div>
</div>
<div id="register">
<p>To register yourself to a seminar please click on this icon
<a title="Book for me" class="book-for-me-button"></a>. To register someone else to a seminar, please click on this icon
<a title="Book for me" class="book-for-user-button"></a>.<br/></p>
</div>
感谢任何帮助。
不幸的是,这就是页面在刷新时应该执行的操作。页面被清除。您需要将数据持久保存到数据库中以保存信息。这就是你想要的例子吗?
正如@Djave 所说这里缺少的一点是在你将你想要的项目保存到 localstorage
之后,你应该在页面加载时加载它。
因此,为了在 localstorage
中设置一个值,您可以简单地执行以下操作,无论何时触发点击事件,您都应该像这样将值保存到本地存储中:
function selected(item) {
this.clear();
item.style.backgroundColor = 'yellow';
window.localStorage.setItem('backgroundColor', 'yellow');
}
然后使用 onload
事件,您可以在 window 加载时加载它,就像这样:
window.onload = function() {
if (window.localStorage.getItem('backgroundColor')) {
document.querySelector('.list').style.backgroundColor = window.localStorage.getItem('backgroundColor')
}
}
您必须在本地存储中设置 Item 并在页面加载时使用 localStorage.getItem() 检查相同的项目。
这里是你如何做到这一点,检查代码片段:
<style>
#sideNavBox {display:none}
#contentBox {margin-left:0px}
#nav {
display: flex;
flex-wrap: wrap;
flex: 1 1 0px
}
.link {
max-width: 150px;
padding: 3px;
margin: 10px;
border: 2px solid lime;
border-radius: 15px;
flex-basis: 100%;
text-align: center;
cursor: pointer;
}
.active {
background-color: lime
}
.dd13:hover { cursor: pointer; }
.dd13 {
color: #FFFFFF;
Font: 12px Arial
background-color:: #48A040;
Padding: 3px 3px 3px 3px;
}
#pageStatusBar{
display:none!important;
}
</style><script>
window.addEventListener("load", function() {
document.getElementById("nav").addEventListener("click", function(e) {
if (e.target.classList.contains("link")) {
// location = e.target.getAttribute("data-link"); // or openLink(e.target.getAttribute("data-link"))
}
})
})
var divItems = document.getElementsByClassName("link");
function selected(item) {
// this.clear();
if( item.style.backgroundColor == 'yellow')
{
//means the item is selected already. So unset it.
item.style.backgroundColor = 'white';
localStorage.removeItem(item.id);
}
else
{
item.style.backgroundColor = 'yellow';
console.log(item.id);
localStorage.setItem(item.id, 'any value');
}
//localStorage.setItem("tempcolorvalue", "yellow");
}
function clear() {
for(var i=0; i < divItems.length; i++) {
var item = divItems[i];
item.style.backgroundColor = 'white';
}
}
</script>
<h2>
<b>Seminare nach Standort filtern</b></h2>
<div id="nav">
<div class="link" id="firstlink" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Ulm" style="background-color: white;">Ulm</div>
<div class="link" id="secondlink" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Taufkirchen" style="background-color: white;">Taufkirchen<br/></div>
<div class="link" id="thirdlink" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Oberkochen" style="background-color: white;">Oberkochen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Köln" style="background-color: white;">Köln</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Friedrichshafen" style="background-color: white;">Friedrichshafen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Wetzlar" style="background-color: white;">Wetzlar</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Kiel" style="background-color: white;">Kiel<br/></div>
</div>
<div id="register">
<p>To register yourself to a seminar please click on this icon
<a title="Book for me" class="book-for-me-button"></a>. To register someone else to a seminar, please click on this icon
<a title="Book for me" class="book-for-user-button"></a>.<br/></p>
</div>
<script>
if(localStorage.getItem("firstlink"))
{
document.getElementById('firstlink').style.backgroundColor = "yellow";
}
if(localStorage.getItem("secondlink"))
{
document.getElementById('secondlink').style.backgroundColor = "yellow";
}
if(localStorage.getItem("thirdlink"))
{
document.getElementById('thirdlink').style.backgroundColor = "yellow";
}
</script>
点击后我把div的背景颜色改成了黄色,但是页面刷新后,颜色没有变化了。
这是我使用的代码:
function selected(item) {
this.clear();
item.style.backgroundColor = 'yellow';
}
function clear() {
for(var i=0; i < divItems.length; i++) {
var item = divItems[i];
item.style.backgroundColor = 'white';
}
}
</script>
<h2>
<b>Seminare nach Standort filtern</b></h2>
<div id="nav">
<div class="link" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Ulm" style="background-color: white;">Ulm</div>
</div>
我尝试使用 localStorage,但我不知道如何在此处应用它。
也许像 localStorage.setItem("item.style.backgroundColor", 'yellow');
这样的东西,但仅此是不行的
完整代码如下:
<style>
#sideNavBox {display:none}
#contentBox {margin-left:0px}
#nav {
display: flex;
flex-wrap: wrap;
flex: 1 1 0px
}
.link {
max-width: 150px;
padding: 3px;
margin: 10px;
border: 2px solid lime;
border-radius: 15px;
flex-basis: 100%;
text-align: center;
cursor: pointer;
}
.active {
background-color: lime
}
.dd13:hover { cursor: pointer; }
.dd13 {
color: #FFFFFF;
Font: 12px Arial
background-color:: #48A040;
Padding: 3px 3px 3px 3px;
}
#pageStatusBar{
display:none!important;
}
</style><script>
window.addEventListener("load", function() {
document.getElementById("nav").addEventListener("click", function(e) {
if (e.target.classList.contains("link")) {
location = e.target.getAttribute("data-link"); // or openLink(e.target.getAttribute("data-link"))
}
})
})
var divItems = document.getElementsByClassName("link");
function selected(item) {
this.clear();
item.style.backgroundColor = 'yellow';
}
function clear() {
for(var i=0; i < divItems.length; i++) {
var item = divItems[i];
item.style.backgroundColor = 'white';
}
}
</script>
<h2>
<b>Seminare nach Standort filtern</b></h2>
<div id="nav">
<div class="link" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Ulm" style="background-color: white;">Ulm</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Taufkirchen" style="background-color: white;">Taufkirchen<br/></div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Oberkochen" style="background-color: white;">Oberkochen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Köln" style="background-color: white;">Köln</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Friedrichshafen" style="background-color: white;">Friedrichshafen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Wetzlar" style="background-color: white;">Wetzlar</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Kiel" style="background-color: white;">Kiel<br/></div>
</div>
<div id="register">
<p>To register yourself to a seminar please click on this icon
<a title="Book for me" class="book-for-me-button"></a>. To register someone else to a seminar, please click on this icon
<a title="Book for me" class="book-for-user-button"></a>.<br/></p>
</div>
感谢任何帮助。
不幸的是,这就是页面在刷新时应该执行的操作。页面被清除。您需要将数据持久保存到数据库中以保存信息。这就是你想要的例子吗?
正如@Djave 所说这里缺少的一点是在你将你想要的项目保存到 localstorage
之后,你应该在页面加载时加载它。
因此,为了在 localstorage
中设置一个值,您可以简单地执行以下操作,无论何时触发点击事件,您都应该像这样将值保存到本地存储中:
function selected(item) {
this.clear();
item.style.backgroundColor = 'yellow';
window.localStorage.setItem('backgroundColor', 'yellow');
}
然后使用 onload
事件,您可以在 window 加载时加载它,就像这样:
window.onload = function() {
if (window.localStorage.getItem('backgroundColor')) {
document.querySelector('.list').style.backgroundColor = window.localStorage.getItem('backgroundColor')
}
}
您必须在本地存储中设置 Item 并在页面加载时使用 localStorage.getItem() 检查相同的项目。
这里是你如何做到这一点,检查代码片段:
<style>
#sideNavBox {display:none}
#contentBox {margin-left:0px}
#nav {
display: flex;
flex-wrap: wrap;
flex: 1 1 0px
}
.link {
max-width: 150px;
padding: 3px;
margin: 10px;
border: 2px solid lime;
border-radius: 15px;
flex-basis: 100%;
text-align: center;
cursor: pointer;
}
.active {
background-color: lime
}
.dd13:hover { cursor: pointer; }
.dd13 {
color: #FFFFFF;
Font: 12px Arial
background-color:: #48A040;
Padding: 3px 3px 3px 3px;
}
#pageStatusBar{
display:none!important;
}
</style><script>
window.addEventListener("load", function() {
document.getElementById("nav").addEventListener("click", function(e) {
if (e.target.classList.contains("link")) {
// location = e.target.getAttribute("data-link"); // or openLink(e.target.getAttribute("data-link"))
}
})
})
var divItems = document.getElementsByClassName("link");
function selected(item) {
// this.clear();
if( item.style.backgroundColor == 'yellow')
{
//means the item is selected already. So unset it.
item.style.backgroundColor = 'white';
localStorage.removeItem(item.id);
}
else
{
item.style.backgroundColor = 'yellow';
console.log(item.id);
localStorage.setItem(item.id, 'any value');
}
//localStorage.setItem("tempcolorvalue", "yellow");
}
function clear() {
for(var i=0; i < divItems.length; i++) {
var item = divItems[i];
item.style.backgroundColor = 'white';
}
}
</script>
<h2>
<b>Seminare nach Standort filtern</b></h2>
<div id="nav">
<div class="link" id="firstlink" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Ulm" style="background-color: white;">Ulm</div>
<div class="link" id="secondlink" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Taufkirchen" style="background-color: white;">Taufkirchen<br/></div>
<div class="link" id="thirdlink" onclick="selected(this)" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Oberkochen" style="background-color: white;">Oberkochen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Köln" style="background-color: white;">Köln</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Friedrichshafen" style="background-color: white;">Friedrichshafen</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Wetzlar" style="background-color: white;">Wetzlar</div>
<div class="link" data-link="/internalseminars/SitePages/InternalSeminars.aspx?locations=Kiel" style="background-color: white;">Kiel<br/></div>
</div>
<div id="register">
<p>To register yourself to a seminar please click on this icon
<a title="Book for me" class="book-for-me-button"></a>. To register someone else to a seminar, please click on this icon
<a title="Book for me" class="book-for-user-button"></a>.<br/></p>
</div>
<script>
if(localStorage.getItem("firstlink"))
{
document.getElementById('firstlink').style.backgroundColor = "yellow";
}
if(localStorage.getItem("secondlink"))
{
document.getElementById('secondlink').style.backgroundColor = "yellow";
}
if(localStorage.getItem("thirdlink"))
{
document.getElementById('thirdlink').style.backgroundColor = "yellow";
}
</script>