使用纯javascript在特定元素之前和之后查找元素

使用纯javascript在特定元素之前和之后查找元素

问题描述:

列出包含以下链接的列表:

Having a list with links like this:

<ul>
    <li><a href="#">First tab</a></li>
    <li><a href="#">Second tab</a></li>
    <li class="active"><a href="#">Active tab</a></li>
    <li><a href="#">Fourth tab</a></li>
    <li><a href="#">Fifth tab</a></li>
</ul>

如何在活动标签之前和之后找到元素? (在这种情况下,第二个和第四个标签)。

How can be found element before and after the active tab? (In this case, the second and fourth tab).

我正在寻找纯JavaScript 仅限,因为jQuery解决方案是此处

注意: nextElementSibling previousElementSibling $ IE8和FF3不支持c $ c>,因此请发布这些浏览器也支持的解决方案。谢谢。

Note: nextElementSibling and previousElementSibling are not supported by IE8 and FF3, so please post solutions that would be supported by those browsers as well. Thank you.

假设你的< ul> 元素被调用元素

var active, prev, next;
active = prev = next = element.querySelector('.active');

do prev = prev.previousSibling; while(prev && prev.nodeType !== 1);
do next = next.nextSibling;     while(next && next.nodeType !== 1);

这适用于Internet Explorer 8.如果您只担心现代浏览器:

This will work in Internet Explorer 8. If you're only worried about modern browsers:

var active = element.querySelector('.active');
var prev = active.previousElementSibling;
var next = active.nextElementSibling;