2012-05-06 15 views
36

मैं क्रोम सामग्री स्क्रिप्ट एक्सटेंशन लिख रहा हूं और मुझे एक विशिष्ट तत्व को लक्षित करने में सक्षम होना चाहिए, दुर्भाग्य से, इसके मूल तत्व को छोड़कर कोई अद्वितीय पहचानकर्ता नहीं है।तत्काल पहले बच्चे तत्व प्राप्त करें

मुझे parentElement के तत्काल पहले बच्चे तत्व को लक्षित करने की आवश्यकता है। console.log(parentElement) दोनों बच्चे तत्वों/नोड्स को पूरी तरह से रिपोर्ट करता है, लेकिन सफल कंसोल लॉग (जो बच्चे नोड्स को लक्षित करते हैं) हमेशा undefined मान वापस करते हैं, इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं।

यह मेरा कोड है अब तक

function injectCode() { 

    var parentElement = document.getElementsByClassName("uniqueClassName"); 

    if (parentElement && parentElement.innerHTML != "") { 

     console.log(parentElement); 
     console.log(parentElement.firstElementChild); 
     console.log(parentElement.firstChild); 
     console.log(parentElement.childNodes); 
     console.log(parentElement.childNodes[0]); 
     console.log(parentElement.childNodes[1]); 

    } else { 

     setTimeout(injectCode, 250); 
    } 
} 

मैं पहले बच्चे तत्व/के नोड का चयन कैसे करूं (मैं भ्रम और अतिरिक्त, अनावश्यक स्पष्टीकरण से बचने के लिए वास्तविक नाम बाहर रखा गया है) parentElement?

enter image description here

अद्यतन:
parentElement.children[0] भी parentElement.childNodes[0] रूप में एक ही त्रुटि है।

+2

आप पहली बार करना चाहते हैं बाल नोड या पहला बच्चा ** तत्व ** (नोड)? –

+0

पैरेंट div और बच्चे के बीच किसी भी स्थान को न दें, लेकिन यह एक पंक्ति में –

+0

बाल नोड्स [0] 'अनिर्धारित' सही है? नीचे मेरा उत्तर डब्ल्यू उदाहरण देखें। –

उत्तर

83

इन दोनों आप पहले बच्चे नोड दे देंगे:

console.log(parentElement.firstChild); // or 
console.log(parentElement.childNodes[0]); 

आप पहले बच्चे एक तत्व नोड है कि जरूरत है तो का उपयोग करें:

console.log(parentElement.children[0]); 

संपादित

आह, अब मैं आपकी समस्या देखता हूं; parentElement एक सरणी है।

यदि आप जानते हैं कि केवल एक ही परिणाम वापस आ जाएगी, जो ऐसा लगता है आप करते हैं, आप [0] का उपयोग करना चाहिए dearray को (हाँ, मुझे लगता है कि शब्द बना) तत्व:

var parentElement = document.getElementsByClassName("uniqueClassName")[0]; 
+0

सब कुछ अपरिभाषित लौटाता है (जैसा कि आप छवि में देख सकते हैं), और जब आप '[0]' का उपयोग करते हैं तो यह पूरी स्क्रिप्ट को जाता है। मैंने अभी '.children [0] 'भी कोशिश की, और यह भी काम नहीं किया। :/ – mythofechelon

+0

@BenHooper ने आपके उत्तर को अपडेट किया क्योंकि आपने स्क्रीनशॉट जोड़ा है, मैंने वास्तविक समस्या देखी है। – Paulpro

+0

हां! वह काम किया! आपको बहुत - बहुत धन्यवाद! : डी – mythofechelon

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