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

时间:2013-04-02 07:08:14

标签: 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

1 个答案:

答案 0 :(得分:1)

我们需要跟踪当前显示的div并处理keydown事件以检查左右键。请参阅下面的示例。

jsFiddle

<强>的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';
    }
}

<强> CSS

div {
    width:100px;
    height:100px;
    background-color:#F00;
    display:none;

    line-height:100px;
    font-size:4em;
    text-align:center;
}
div:nth-child(even) {
    background-color:#0F0;
}

更新

如果您不知道元素的数量,那么我建议您使用类来定义元素。

<强> HTML

<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>

<强> JS

除了初始化divsnumDivs之外,所有javascript都是相同的。

var divs = document.getElementsByClassName('slide');
var numDivs = divs.length;