ডিওএম প্যারেন্টনোড এবং প্যারেন্টএলমেন্টের মধ্যে পার্থক্য


500

ক্লাসিকাল ডিওএম প্যারেন্টনোড এবং ফায়ারফক্স 9 প্যারেন্টইলেমেন্টে নতুনভাবে প্রবর্তিত এর মধ্যে পার্থক্য কী, কেউ আমাকে যথাসম্ভব সহজ শর্তে ব্যাখ্যা করতে পারবেন ?




4
প্যারেন্টনোডটি ডিওএম স্ট্যান্ডার্ড বলে মনে হচ্ছে, তাই প্যারেন্টএলমেন্টের পরিবর্তে এটি সর্বদা ব্যবহার করা নিরাপদ।
টিএমএস

5
@TMS w3school একটা কর্তৃত্বের নয়: w3fools.com
Guillaume, সার্বজনীনভাবে

উত্তর:


486

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তবে আপনি সেগুলি কখনই আসতে পারবেন না))


162
অন্য কথায়, এটি সময়ের 99.99999999999999% সম্পূর্ণ অর্থহীন% কার ধারণা ছিল?
নাইট দ্য ডার্ক আবসোল

25
মূলটি parentElementছিল মালিকানার আই আই জিনিস; আমি বিশ্বাস করি সে সময় অন্যান্য ব্রাউজারগুলি (যেমন, নেটস্কেপ) সমর্থিত parentNodeতবে তা নয় parentElement। (স্পষ্টতই, আমি নেটস্কেপের উল্লেখ করেছি, আমি আই 5 এবং এর আগের দিকে কথা বলছি ...)
nnnnnn

9
@ একাকী দিন আপনি ভুলে গেছেনdocumentfragment.firstChild.parentElement === null
রায়নস

7
@ রায়নোস আমার উত্তরের শেষ বাক্যটি মনে রেখেছিলাম এটিই ছিল যথাযথ পরিস্থিতি ...
একাকী

17
যেমনটি আমি সবেমাত্র আবিষ্কার করেছি, একটি এসভিজি উপাদান (যেমন একটি circleঅভ্যন্তরের মতো g), আইই তে, অপরিবর্তিত parentElementহবে এবং parentNodeআপনি যা খুঁজছেন তা হবে। :(
জেসন ওয়ালটন

94

ইন্টারনেট এক্সপ্লোরার ইন, parentElementএসভিজি উপাদানগুলির জন্য অপরিজ্ঞাত, যেখানে parentNodeসংজ্ঞায়িত হয়।


10
সত্যই আমি মনে করি এটি একটি উত্তর চেয়ে মন্তব্য বেশি।
shabunc

38
সম্ভবত, তবে এ কারণেই আমি টেবিলের বিপরীতে আমার মাথাটি এক ঘন্টা বা তারও বেশি সময় টান দিয়েছি যতক্ষণ না আমি এটি বের করেছিলাম। আমি সন্দেহ করি অন্য অনেকে একই পৃষ্ঠায় মাথা ঘুরানোর পরে এই পৃষ্ঠাতে আসে।
স্পিড প্লেন

3
@ স্পিডপ্লেন গ্ল্যাড এটি একটি উত্তর কারণ এটি কোনও যৌক্তিক ধারণা তৈরি করে না এবং আমাকে ভাল সময়ের জন্য স্টাম্পড করেছিল ...
সুপারফোনিক

1
এটি মন্তব্য নোডের জন্যও অপরিবর্তিত। ক্রোমে আমি আনন্দের সাথে একটি মন্তব্যের পিতামাতাকে পেয়েছিলাম, তবে এটি IE এ অপরিবর্তিত ছিল।
সাইমন_উইভার

আমি এর জন্য কোনও উত্স খুঁজে পাইনি। parentElementবাস্তবায়িত হচ্ছে না Nodeতা ভালভাবেই জানেন ( ডেভেলপার.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / এপিআই / নোড / SVGElement? ) তবে কি ? document.createElement('svg').parentElementআইই 11.737.17763.0 এও আমি এটি পুনরুত্পাদন করতে পারিনি। এর মধ্যেই কি এটি ঠিক করা হয়েছিল?
epsilon

14

ব্যবহার করুন .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লিঙ্ক ডকুমেন্ট । নোড নোড নন যেহেতু নোডগুলি নথি দ্বারা ধারনযোগ্য হিসাবে সংজ্ঞায়িত করা হয় এবং নথিতে নথিতে নথি থাকতে পারে না বলে নথি নোড নয় বলে এটি একটি সিদ্ধান্ত ফেইল হিসাবে বিবেচনা করা উচিত ।


6

শুধু মতো 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

1
হ্যাঁ, তবে nextsibling পাঠ্য বা মন্তব্য নোডের বিপরীতে পিতামাতার হতে পারে না।
জেসেন

0

আরও একটি পার্থক্য রয়েছে, তবে কেবল ইন্টারনেট এক্সপ্লোরারেই। আপনি যখন এইচটিএমএল এবং এসভিজির মিশ্রণ করেন তখন এটি ঘটে। যদি পিতা বা মাতা এই দু'জনের 'অন্য' হয় তবে প্যারেন্টনোড পিতামাতাকে দেয় তবে প্যারেন্টএলেমেন্ট অপরিজ্ঞাত দেয়।


1
আমি মনে করি এটি undefinedনা null
ব্রায়ান ডি পালমা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.