ক্লাসিকাল ডিওএম প্যারেন্টনোড এবং ফায়ারফক্স 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।