Javascript:循环遍历每个第三个子节点

时间:2010-11-25 07:37:40

标签: javascript dom

如果我有父节点,我怎样才能遍历每个第三个子节点?

我现在有了这段代码:

var parents = document.getElementById('ID_of_parent');
var first_child = parents.firstChild.data.id;
alert(parents);
alert(first_child);

对于父母,我现在得到' [object HTMLDivElement] ',对于first_child,我得到了' undefined '。

5 个答案:

答案 0 :(得分:22)

var nodes = document.getElementById('ID_of_parent').childNodes;
for(i=0; i<nodes.length; i+=3) {
    alert(nodes[i]);
}

答案 1 :(得分:2)

你考虑过jQuery吗?

$("#ID_of_parent > *:nth-child(3n)").each(function() { alert(this);});

我在这里实施了一个演示:http://jsbin.com/ahije4/5

答案 2 :(得分:1)

element.childNodes集合是您所需要的。 您需要跳过不是元素的子节点(element.nodeType != 1)。

var d = document.getElementById("ID_of_parent");
    if (d)
    {
        for(var i = 0; i < d.childNodes.length; i++)
        {
            if (d.childNodes[i].nodeType == 1)
                alert(typeof(d.childNodes[i]) + "- " + d.childNodes[i].nodeType + ": " + d.childNodes[i].tagName + " - " + d.childNodes[i].innerHTML);
        }
    }

答案 3 :(得分:0)

function makeSkippingIterator(parent,stride) {
    if(isNaN(stride) || stride < 1)
        stride = 1
    var node = parent.firstChild
    return function() {
        var returnable = node,
            cnt = stride
        while(--cnt >= 0 && node) {
            node = node.nextElementSibling
        }
        return returnable
    }
}

继续调用你回来的生成器,直到它对你没有任何价值。

答案 4 :(得分:0)

我建议使用.css()each与jQuery

//set node attribute
($('#ID_of_parent > third_child').css( 'propertyName' , 'value' );

//execute each nodes
$.each($('#ID_of_parent'), function( key, child ) {
    console.log(child);
});

您可以在此处看到工作示例:
https://jsfiddle.net/chetabahana/8x65wq32/20/