有人可以告诉我如何循环div中的锚标签并找到下一个兄弟?
到目前为止我有这个.
var menu = document.getElementById('menu');
var links = menu.getElementsByTagName('a');
Run Code Online (Sandbox Code Playgroud)
如何循环链接?我可以.nextSibling用来查找下一个兄弟是否是div?
Tim*_*own 19
nextSiblingDOM节点的属性在所有浏览器中都能完美运行,并且完全符合您的期望.如果没有下一个兄弟,它会返回null.
迭代a NodeList(getElementsByTagName返回的内容)与使用标准for循环迭代数组完全相同.以下将迭代链接并在每次找到其下一个兄弟是的时候发出警报<div>:
var menu = document.getElementById('menu');
var links = menu.getElementsByTagName('a');
// Iterate over the links
for (var i = 0, len = links.length, link; i < len; ++i) {
link = links[i];
if (link.nextSibling && link.nextSibling.nodeName == "DIV") {
alert("Next sibling is DIV! " + link.innerHTML);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,在非IE浏览器中,HTML中元素之间的空格被视为文本节点.在考虑每个链接的下一个兄弟节点时,您可能希望忽略这些空白节点.以下将做到这一点:
function isWhitespace(node) {
return node.nodeType == 3 && /^\s*$/.test(node.data);
}
// Iterate over the links
for (var i = 0, len = links.length, link, next; i < len; ++i) {
link = links[i];
next = link.nextSibling;
if (next && isWhitespace(next)) {
next = next.nextSibling;
}
if (next && next.nodeName == "DIV") {
alert("Next sibling is DIV! " + link.innerHTML);
}
}
Run Code Online (Sandbox Code Playgroud)