.TagName এবং .nodeName এর মধ্যে পার্থক্য


137

মধ্যে পার্থক্য কি $('this')[0].nodeNameএবং $('this')[0].tagName?


10
এই প্রশ্নটি ডোম প্রশ্ন বেশি কারণ এটি jquery নির্দিষ্ট নয়।
গ্রেগ

উত্তর:


126

tagNameসম্পত্তি জন্য বিশেষভাবে বোঝানো হয় উপাদান নোড (1 নোড টাইপ করুন) ধরণ পেতে উপাদান

নোডের আরও বেশ কয়েকটি প্রকার রয়েছে (মন্তব্য, বৈশিষ্ট্য, পাঠ্য ইত্যাদি)। বিভিন্ন নোডের যে কোনওটির নাম পেতে, আপনি nodeNameসম্পত্তিটি ব্যবহার করতে পারেন ।

nodeNameকোনও এলিমেন্ট নোডের বিপরীতে ব্যবহার করার সময় আপনি এর ট্যাগের নামটি পেয়ে যাবেন, তাই হয় সত্যিই ব্যবহার করা যেতে পারে, যদিও আপনি ব্যবহার করার সময় ব্রাউজারগুলির মধ্যে আরও ভাল ধারাবাহিকতা পাবেন nodeName


45

এটি উভয়ের মধ্যে পার্থক্যের একটি দুর্দান্ত ভাল ব্যাখ্যা।


নিবন্ধ থেকে পাঠ্য যুক্ত:

tagNameএবং nodeNameএইচটিএমএল উপাদানটির নাম যাচাই করার জন্য উভয়ই জাভাস্ক্রিপ্টের বৈশিষ্ট্য। বেশিরভাগ উদ্দেশ্যে, হয় ঠিকঠাক করবে তবে নোডনামকে অগ্রাধিকার দেওয়া হয় যদি আপনি কেবল এ-গ্রেড ব্রাউজারগুলিকে সমর্থন করেন এবং আপনি যদি আই 5.5 সমর্থন করতে চান তবে ট্যাগনামকে অগ্রাধিকার দেওয়া হয়।

এর সাথে দুটি সমস্যা রয়েছে tagName:

  • আইই এর সমস্ত সংস্করণে, ট্যাগ নোম !একটি মন্তব্য নোডে কল করলে ফিরে আসে
  • পাঠ্য নোডের জন্য, undefinedট্যাগনাম আবার নোডনাম ফেরত দেয়#text

nodeNameইস্যুগুলির নিজস্ব সেট রয়েছে তবে সেগুলি কম গুরুতর:

  • !একটি মন্তব্য নোডে কল করা হলে IE 5.5 প্রদান করে । এটি ট্যাগনামের চেয়ে কম ক্ষতিকারক যা IE এর সমস্ত সংস্করণ জুড়ে এই আচরণটি ভোগ করে
  • IE 5.5 documentউপাদান বা বৈশিষ্ট্যের জন্য নোডনাম সমর্থন করে না । এগুলির কোনওটিই বেশিরভাগ ব্যবহারিক উদ্দেশ্যে উদ্বেগজনক হওয়া উচিত না তবে যেকোন ক্ষেত্রে এটি মাথায় রাখা উচিত
  • এই সম্পত্তিটি ব্যবহার করার সময় কনকরার মন্তব্য নোড উপেক্ষা করে। তবে আবার, আইপি 5.5 এর সাথে কনকরার কোনও এ-গ্রেড ব্রাউজার নয়

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


17

ডিওএম কোর অনুচ্ছেদে সেই বৈশিষ্ট্যগুলি সম্পর্কে পড়ুন।

nodeNameএকটি সম্পত্তি ইন্টারফেস নোড সংজ্ঞায়িত করা হয়
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095

tagNameএলিমেন্ট ইন্টারফেসে সংজ্ঞায়িত একটি সম্পত্তি
http://www.w3.org/TR/DOM-Lelvel-3-Core/core.html#ID-104682815

বিটিডব্লিউ নোড ইন্টারফেসটি ডম গাছের প্রতিটি নোড দ্বারা প্রয়োগ করা হয় ( documentবস্তুটি নিজেই)) এলিমেন্ট ইন্টারফেসটি কেবল ডম গাছের সেই নোডগুলি দ্বারা প্রয়োগ করা হয় যা এইচটিএমএল নথিতে উপাদানগুলিকে উপস্থাপন করে ( nodeType=== 1 সহ নোড )।


4

ফায়ারফক্স 33 এবং ক্রোম 38 এ এটিই ঘটে:

এইচটিএমএল:

<div class="a">a</div>

js:

node = e
node.nodeType === 1
node.nodeName === 'DIV'
node.tagName  === 'DIV'

node = e.getAttributeNode('class')
node.nodeType === 2
node.nodeName === 'class'
node.tagName  === undefined

node = e.childNodes[0]
node.nodeType === 3
node.nodeName === '#text'
node.tagName  === undefined

তাই:

  • শুধুমাত্র nodeTypeনোড টাইপ পেতে nodeNameবিরতি : জন্য বিরতিnodeType === 1
  • শুধুমাত্র জন্য tagNameব্যবহারnodeType === 1

3
" nodeNameবিরতি " কিভাবে nodeType === 1?
WD40
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.