如何通过Javascript显示/隐藏一系列有序元素?
在按id编号排序的一系列元素中如何通过Javascript显示/隐藏一系列有序元素?,javascript,html,javascript-events,show,Javascript,Html,Javascript Events,Show,在按id编号排序的一系列元素中 <div id="test-1"> <div id="test-2"> <div id="test-3"> <div id="test-4"> <div id="test-5"> 假设我们希望通过箭头键显示/隐藏每个元素。在纯Javascript中,最好的方法是什么 问题是,当显示前三个元素时,我们如何检测后向箭头显示隐藏元素\3,前向箭头应显示元素\4?我们需要跟踪当前显示的div,并处理keyd
<div id="test-1">
<div id="test-2">
<div id="test-3">
<div id="test-4">
<div id="test-5">
假设我们希望通过箭头键显示/隐藏每个元素。在纯Javascript中,最好的方法是什么
问题是,当显示前三个元素时,我们如何检测后向箭头显示隐藏元素
\3
,前向箭头应显示元素\4
?我们需要跟踪当前显示的div,并处理keydown
事件以检查左右键。请参见下面的示例
JavaScript
var numDivs = 5;
var divs = [];
for (var i = 1; i < numDivs + 1; i++)
divs.push(document.getElementById('test-' + i));
var current = 0;
showDiv(current);
window.onkeydown = function (e) {
if (e.keyCode == 37) {
// Left
current--;
if (current < 0)
current = numDivs - 1; // wrap around back to max
showDiv(current);
} else if (e.keyCode == 39) {
// Right
current++;
if (current == numDivs)
current = 0; // wrap around back to 0
showDiv(current);
}
};
// Hide all divs except for index passed in
function showDiv(div) {
for (var i = 0; i < divs.length; i++) {
divs[i].style.display = div == i ? 'block' : 'none';
}
}
更新
如果您不知道元素的数量,那么我建议您使用一个类来定义元素
HTML
<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>
我们需要跟踪当前显示的div,并处理
keydown
事件以检查左右键。请参见下面的示例
JavaScript
var numDivs = 5;
var divs = [];
for (var i = 1; i < numDivs + 1; i++)
divs.push(document.getElementById('test-' + i));
var current = 0;
showDiv(current);
window.onkeydown = function (e) {
if (e.keyCode == 37) {
// Left
current--;
if (current < 0)
current = numDivs - 1; // wrap around back to max
showDiv(current);
} else if (e.keyCode == 39) {
// Right
current++;
if (current == numDivs)
current = 0; // wrap around back to 0
showDiv(current);
}
};
// Hide all divs except for index passed in
function showDiv(div) {
for (var i = 0; i < divs.length; i++) {
divs[i].style.display = div == i ? 'block' : 'none';
}
}
更新
如果您不知道元素的数量,那么我建议您使用一个类来定义元素
HTML
<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>
您是否需要在给定的时间只显示一个元素或一组元素?当前的工作示例基于一个示例,但最好能够显示多个元素,尽管这并不困难。只需保持显示的一个可见。您是否需要在给定的时间只显示一个元素或一组元素?当前的工作示例基于一个示例,但最好能够显示多个元素,尽管这并不困难。只需保持显示的一个可见。只是一个问题。你有没有想过在没有元素数量的情况下做这件事?对我来说,唯一可能的方法就是用一个家长数一数孩子。这只是一个问题。你有没有想过在没有元素数量的情况下做这件事?对我来说,唯一可能的方法就是使用一个家长,数一数孩子。