2010-11-25 23 views
9

के माध्यम से यदि मुझे कोई पैरेंट नोड मिला, तो मैं प्रत्येक तीसरे बच्चे नोड के माध्यम से कैसे लूप कर सकता हूं?जावास्क्रिप्ट: लूप प्रत्येक तीसरे बच्चे नोड

मैं अब इस कोड मिल गया है:

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

माता-पिता के लिए, मुझे मिल गया अब '[वस्तु HTMLDivElement]' और first_child के लिए मुझे मिल गया 'अपरिभाषित'।

+0

'अलर्ट (माता-पिता.फर्स्टChild.data)' और 'अलर्ट (माता-पिता.फर्स्टChild.data.id) क्या आपको देता है? समस्या यहीं है। –

+0

.data मुझे "" (खाली) देता है, और .data.id मुझे "अपरिभाषित" देता है –

उत्तर

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

यह 'document.getElementById ("ID_of_parent") देता है। ChildNodes कोई फ़ंक्शन नहीं है? –

+0

@ फ्लोरियन फिक्स्ड, इसके बारे में खेद है। –

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

क्या आपने jQuery पर विचार किया है?

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

मैं यहाँ एक डेमो कार्यान्वित: http://jsbin.com/ahije4/5

+0

धन्यवाद, बिल्कुल मुझे जो चाहिए: केवल टैग लौटें (टेक्स्ट-नोड्स f.e. नहीं)। .children() के साथ झुकाव के बजाय nth-child-selector का भी उपयोग करना बहुत अच्छा है। –

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

रखें जनरेटर वापस पहुंचने के लिए बुला जब तक यह आप के लिए कोई मूल्य नहीं है।

संबंधित मुद्दे