如何通过Javascript显示/隐藏一系列有序元素?

如何通过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

在按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,并处理
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>

您是否需要在给定的时间只显示一个元素或一组元素?当前的工作示例基于一个示例,但最好能够显示多个元素,尽管这并不困难。只需保持显示的一个可见。您是否需要在给定的时间只显示一个元素或一组元素?当前的工作示例基于一个示例,但最好能够显示多个元素,尽管这并不困难。只需保持显示的一个可见。只是一个问题。你有没有想过在没有元素数量的情况下做这件事?对我来说,唯一可能的方法就是用一个家长数一数孩子。这只是一个问题。你有没有想过在没有元素数量的情况下做这件事?对我来说,唯一可能的方法就是使用一个家长,数一数孩子。