मुझे संभव शब्दों के रूप में सरल रूप में से समझाने में कर सकते किसी को, शास्त्रीय डोम के बीच अंतर क्या है parentNode Firefox 9 में शुरू की और नव parentElement
मुझे संभव शब्दों के रूप में सरल रूप में से समझाने में कर सकते किसी को, शास्त्रीय डोम के बीच अंतर क्या है parentNode Firefox 9 में शुरू की और नव parentElement
जवाबों:
parentElement फ़ायरफ़ॉक्स 9 और DOM4 के लिए नया है, लेकिन यह उम्र के लिए अन्य सभी प्रमुख ब्राउज़रों में मौजूद है।
ज्यादातर मामलों में, यह वैसा ही है parentNode। केवल एक अंतर तब आता है जब एक नोड parentNodeएक तत्व नहीं है। यदि हां, तो parentElementहै null।
उदहारण के लिए:
document.body.parentNode; // the <html> element
document.body.parentElement; // the <html> element
document.documentElement.parentNode; // the document node
document.documentElement.parentElement; // null
(document.documentElement.parentNode === document); // true
(document.documentElement.parentElement === document); // false
चूंकि <html>तत्व ( document.documentElement) में एक अभिभावक नहीं है जो एक तत्व है, parentElementहै null। (अन्य, अधिक संभावना नहीं, ऐसे मामले parentElementहैं null, जो हो सकते हैं , लेकिन आप शायद कभी भी उनके सामने नहीं आएंगे।)
parentElementएक मालिकाना IE चीज़ थी; मेरा मानना है कि उस समय अन्य ब्राउज़र (जैसे, नेटस्केप) समर्थित थे parentNodeलेकिन नहीं parentElement। (जाहिर है, यह देखते हुए कि मैंने नेटस्केप का उल्लेख किया है, मैं IE5 और पहले के तरीके के बारे में बात कर रहा हूं ...)
documentfragment.firstChild.parentElement === null
circleअंदर g), आईई में, parentElementअपरिभाषित parentNodeहोगा , और वही होगा जो आप देख रहे हैं। :(
इंटरनेट एक्सप्लोरर में, parentElementएसवीजी तत्वों के लिए अपरिभाषित है, जबकि parentNodeपरिभाषित किया गया है।
parentElementके लिए लागू नहीं किया जा रहा Nodeहै अच्छी तरह से पता है ( developer.mozilla.org/en-US/docs/Web/API/Node/… ) लेकिन के लिए SVGElement? मैं भी document.createElement('svg').parentElementIE 11.737.17763.0 में इस के साथ पुन: पेश नहीं कर सका । क्या इस बीच शायद तय किया गया था?
.parentElementजब तक आप दस्तावेज़ के टुकड़े का उपयोग नहीं कर रहे हैं, तब तक उपयोग करें और आप गलत नहीं हो सकते
यदि आप दस्तावेज़ के टुकड़े का उपयोग करते हैं, तो आपको आवश्यकता है .parentNode:
let div = document.createDocumentFragment().appendChild(document.createElement('div'));
div.parentElement // null
div.parentNode // document fragment
इसके अलावा:
let div = document.getElementById('t').content.firstChild
div.parentElement // null
div.parentNode // document fragment
<template id="t"><div></div></template>
जाहिरा तौर पर <html>के .parentNodeलिए लिंक के दस्तावेज । इसे एक फ़ैसला फ़ैला माना जाना चाहिए क्योंकि दस्तावेज़ नोड्स नहीं होते हैं क्योंकि नोड्स को दस्तावेजों द्वारा समाहित करने के लिए परिभाषित किया जाता है और दस्तावेज़ों को दस्तावेज़ों में शामिल नहीं किया जा सकता है।
बस के साथ की तरह nextSibling और nextElementSibling , सिर्फ इतना है कि, हमेशा उनके नाम में "तत्व" के साथ गुण रिटर्न याद Elementया null। गुण बिना किसी अन्य प्रकार के नोड वापस कर सकते हैं।
console.log(document.body.parentNode, "is body's parent node"); // returns <html>
console.log(document.body.parentElement, "is body's parent element"); // returns <html>
var html = document.body.parentElement;
console.log(html.parentNode, "is html's parent node"); // returns document
console.log(html.parentElement, "is html's parent element"); // returns null
एक और अंतर है, लेकिन केवल इंटरनेट एक्सप्लोरर में। यह तब होता है जब आप HTML और SVG को मिलाते हैं। यदि माता-पिता उन दोनों के 'अन्य' हैं, तो।
undefinedनहीं है null।