JavaScript next sibling?

前端 未结 2 805
执念已碎
执念已碎 2021-01-04 07:59

Could someone show me how to loop through the anchor tags within a div and find the next sibling?

I have this so far.

var menu = document.getElementB         


        
2条回答
  •  南笙
    南笙 (楼主)
    2021-01-04 08:22

    The nextSibling property of DOM nodes works perfectly in all browsers and does exactly what you'd expect. If there is no next sibling, it returns null.

    Iterating over a NodeList (which is what getElementsByTagName returns) is identical to iterating over an array using a standard for loop. The following will iterate over the links and alert each time it finds one whose next sibling is a

    :

    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);
        }
    }
    

    Note that in non-IE browsers, whitespace between elements in HTML is considered a text node. You may want to ignore these whitespace nodes when considering what the next sibling of each link is. The following will do that:

    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);
        }
    }
    

提交回复
热议问题