ক্লাসিকাল ডিওএম প্যারেন্টনোড এবং ফায়ারফক্স 9 প্যারেন্টইলেমেন্টে নতুনভাবে প্রবর্তিত এর মধ্যে পার্থক্য কী, কেউ আমাকে যথাসম্ভব সহজ শর্তে ব্যাখ্যা করতে পারবেন ?
ক্লাসিকাল ডিওএম প্যারেন্টনোড এবং ফায়ারফক্স 9 প্যারেন্টইলেমেন্টে নতুনভাবে প্রবর্তিত এর মধ্যে পার্থক্য কী, কেউ আমাকে যথাসম্ভব সহজ শর্তে ব্যাখ্যা করতে পারবেন ?
উত্তর:
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
ছিল মালিকানার আই আই জিনিস; আমি বিশ্বাস করি সে সময় অন্যান্য ব্রাউজারগুলি (যেমন, নেটস্কেপ) সমর্থিত parentNode
তবে তা নয় parentElement
। (স্পষ্টতই, আমি নেটস্কেপের উল্লেখ করেছি, আমি আই 5 এবং এর আগের দিকে কথা বলছি ...)
documentfragment.firstChild.parentElement === null
circle
অভ্যন্তরের মতো g
), আইই তে, অপরিবর্তিত parentElement
হবে এবং parentNode
আপনি যা খুঁজছেন তা হবে। :(
ইন্টারনেট এক্সপ্লোরার ইন, parentElement
এসভিজি উপাদানগুলির জন্য অপরিজ্ঞাত, যেখানে parentNode
সংজ্ঞায়িত হয়।
parentElement
বাস্তবায়িত হচ্ছে না Node
তা ভালভাবেই জানেন ( ডেভেলপার.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / এপিআই / নোড / SVGElement
? ) তবে কি ? document.createElement('svg').parentElement
আইই 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
আরও একটি পার্থক্য রয়েছে, তবে কেবল ইন্টারনেট এক্সপ্লোরারেই। আপনি যখন এইচটিএমএল এবং এসভিজির মিশ্রণ করেন তখন এটি ঘটে। যদি পিতা বা মাতা এই দু'জনের 'অন্য' হয় তবে প্যারেন্টনোড পিতামাতাকে দেয় তবে প্যারেন্টএলেমেন্ট অপরিজ্ঞাত দেয়।
undefined
না null
।