刷新页面时如何按顺序显示其中一个 div?
How do I show one of the divs sequentially when the page is refreshed?
如何在刷新页面时按顺序显示 div 之一?例如,打开页面时会出现div1,刷新页面时,div2会在下次刷新时变为3 - 4 -5,当队列结束时,它将 return 到开头。
我正在处理的示例:
$(document).ready(function() {
let divs = document.querySelectorAll(".category");
for (let index = 0; index < divs.length; index++) {
$(divs[index]).show()
}
});
.category {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="category">1</div>
<div class="category">2</div>
<div class="category">3</div>
<div class="category">4</div>
<div class="category">5</div>
这里显示的是页面加载时的所有内容。我该如何解决?
这个问题是因为你在一个循环中将所有潜水设置为 show()
。如果您想为每次访问页面更新可见元素,您需要存储当前可见元素,以备下次查看页面时读取。我建议为此使用 localStorage
:
jQuery($ => {
let $divs = $(".category");
let lastShown = localStorage.getItem('lastCategoryIndex') || -1;
$divs.eq(++lastShown % $divs.length).show();
localStorage.setItem('lastCategoryIndex', lastShown)
});
.category {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="category">1</div>
<div class="category">2</div>
<div class="category">3</div>
<div class="category">4</div>
<div class="category">5</div>
这是 jsFiddle 中的一个工作示例,因为 SO 片段是沙盒化的,不允许 localStorage 访问。
尝试此 javascript 解决方案访问此 link 进行演示 JsFiddle
const countRefresh = localStorage.getItem('refreshTurn');
if(countRefresh != null){
foo(parseInt(countRefresh) - 1);
switch(countRefresh) {
case "1":
localStorage.setItem('refreshTurn', '2');
break;
case "2":
localStorage.setItem('refreshTurn', '3');
break;
case "3":
localStorage.setItem('refreshTurn', '4');
break;
case "4":
localStorage.setItem('refreshTurn', '5');
break;
case "5":
localStorage.setItem('refreshTurn', '1');
break;
default:
localStorage.setItem('refreshTurn', '1');
}
} else {
foo(0);
localStorage.setItem('refreshTurn', '1');
}
function foo(index){
$(document).ready(function () {
let divs = document.querySelectorAll(".category");
console.log(index);
$(divs[index]).show()
});
}
如何在刷新页面时按顺序显示 div 之一?例如,打开页面时会出现div1,刷新页面时,div2会在下次刷新时变为3 - 4 -5,当队列结束时,它将 return 到开头。
我正在处理的示例:
$(document).ready(function() {
let divs = document.querySelectorAll(".category");
for (let index = 0; index < divs.length; index++) {
$(divs[index]).show()
}
});
.category {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="category">1</div>
<div class="category">2</div>
<div class="category">3</div>
<div class="category">4</div>
<div class="category">5</div>
这里显示的是页面加载时的所有内容。我该如何解决?
这个问题是因为你在一个循环中将所有潜水设置为 show()
。如果您想为每次访问页面更新可见元素,您需要存储当前可见元素,以备下次查看页面时读取。我建议为此使用 localStorage
:
jQuery($ => {
let $divs = $(".category");
let lastShown = localStorage.getItem('lastCategoryIndex') || -1;
$divs.eq(++lastShown % $divs.length).show();
localStorage.setItem('lastCategoryIndex', lastShown)
});
.category {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div class="category">1</div>
<div class="category">2</div>
<div class="category">3</div>
<div class="category">4</div>
<div class="category">5</div>
这是 jsFiddle 中的一个工作示例,因为 SO 片段是沙盒化的,不允许 localStorage 访问。
尝试此 javascript 解决方案访问此 link 进行演示 JsFiddle
const countRefresh = localStorage.getItem('refreshTurn');
if(countRefresh != null){
foo(parseInt(countRefresh) - 1);
switch(countRefresh) {
case "1":
localStorage.setItem('refreshTurn', '2');
break;
case "2":
localStorage.setItem('refreshTurn', '3');
break;
case "3":
localStorage.setItem('refreshTurn', '4');
break;
case "4":
localStorage.setItem('refreshTurn', '5');
break;
case "5":
localStorage.setItem('refreshTurn', '1');
break;
default:
localStorage.setItem('refreshTurn', '1');
}
} else {
foo(0);
localStorage.setItem('refreshTurn', '1');
}
function foo(index){
$(document).ready(function () {
let divs = document.querySelectorAll(".category");
console.log(index);
$(divs[index]).show()
});
}