ক্যোয়ারীএলেক্টর এবং ক্যোয়ারীস্লেক্টর সমস্ত বনাম getAlementsByClassName এবং জাভাস্ক্রিপ্টে এলিমেটবাইআইডি get


165

আমি জানতে চাই ঠিক মধ্যে পার্থক্য কি চাই querySelectorএবং querySelectorAllবিরুদ্ধে getElementsByClassNameএবং getElementById?

এই লিঙ্কটি থেকে আমি একত্রিত করতে querySelectorপারলাম document.querySelector(".myclass")ক্লাসের সাথে উপাদানগুলি পেতে myclassএবং document.querySelector("#myid")আইডি সহ উপাদান পেতে আমি লিখতে পারি myid। তবে আমি ইতিমধ্যে এটি করতে পারি getElementsByClassNameএবং getElementById। কোনটি পছন্দ করা উচিত?

এছাড়াও আমি এক্সপেজগুলিতে কাজ করি যেখানে আইডিটি গতিশীলভাবে কোলন দিয়ে তৈরি করা হয় এবং এর মতো দেখায় view:_id1:inputText1। সুতরাং আমি যখন লিখি document.querySelector("#view:_id1:inputText1")এটি কাজ করে না। তবে লেখার document.getElementById("view:_id1:inputText1")কাজ। কোন ধারণা কেন?


1
ক্যোয়ারী নির্বাচনকারী একটি এইচটিএমএল ডিওএম ট্রি অনুসন্ধানের জন্য ব্যবহৃত হয় যা এইচটিএমএল উপাদান এবং এর বৈশিষ্ট্যগুলি অনুসন্ধানের মূল উপাদান হিসাবে অন্তর্ভুক্ত করতে পারে ... আপনি এটি অর্জনের জন্য নিয়মিত অভিব্যক্তি ব্যবহার করতে পারেন .. dojo.query () একই কাজ করে
অ্যানিক্স

1
মানে না document.querySelectorAll(".myclass")? ব্যবহারের সাথে document.querySelector(".myclass")মেলে এমন প্রথম উপাদানটি কেবল ফিরে আসবে।
mhatch

উত্তর:


113

আমি জানতে চাই যে ক্যোয়ারিলেক্টর এবং ক্যোয়ারী নির্বাচনকারীর মধ্যে পার্থক্যটি ঠিক কী getElementsByClassName এবং getElementById এর বিপরীতে?

সিনট্যাক্স এবং ব্রাউজার সমর্থন।

querySelector আপনি আরও জটিল নির্বাচক ব্যবহার করতে চান যখন আরও দরকারী।

উদাহরণস্বরূপ সমস্ত তালিকা আইটেমগুলি এমন কোনও উপাদান থেকে উত্পন্ন হয়েছে যা ফু ক্লাসের সদস্য: .foo li

document.querySelector ("# দর্শন: _id1: ইনপুটটেক্সট") এটি কাজ করে না। তবে ডকুমেন্ট.জেটএলমেন্টবিআইআইডি ("দেখুন: _id1: ইনপুটটেক্সট 1") কাজ করে। কোন ধারণা কেন?

:অক্ষর একটি নির্বাচক ভিতরে বিশেষ অর্থ আছে। আপনি এটি এড়াতে হবে। (নির্বাচক এস্কেপ অক্ষর খুব তাই আপনি অব্যাহতি আছে জাতীয় স্ট্রিং বিশেষ অর্থ আছে, যে খুব)।

document.querySelector("#view\\:_id1\\:inputText1")

3
এটি ব্রাউজার থেকে ব্রাউজারে পরিবর্তিত হয় (এবং সংস্করণ থেকে সংস্করণে)। আমি ধরে নেব যে নির্বাচক ভিত্তিকগুলি বেশি ব্যয়বহুল (তবে এমন কোনও উপায়ে নয় যা সম্ভবত তাৎপর্যপূর্ণ হওয়ার সম্ভাবনা রয়েছে)
কোয়ান্টিন

1
আমি @ জনসপেজের বক্তব্য সমর্থন করি। সাইটটিও আজ ডাউন।
ডোপলমি

6
এবং শ্রেণি নির্বাচন সম্পর্কে jsperf.com/getelementsbyclassname-vs-queryselectorall/25 দেখুন । উপসংহার: এক jquery তুলনায় খাঁটি জাভাস্ক্রিপ্ট, এবং নির্দিষ্ট ফাংশন getElementByIdএবং getElementsByClassName। Classname নির্বাচন কয়েক হতে পারে শত শত ছাড়া বার ধীর getElementsByClassName
আতরাহিসিস

101

মজিলা ডকুমেন্টেশন থেকে সংগ্রহ :

নোডিসিলেক্টর ইন্টারফেস এই স্পেসিফিকেশনটি ডকুমেন্ট, ডকুমেন্টফ্রেগমেন্ট বা এলিমেন্ট ইন্টারফেস প্রয়োগকারী যে কোনও অবজেক্টে দুটি নতুন পদ্ধতি যুক্ত করে:

querySelector

নোডের সাবট্রির মধ্যে প্রথম ম্যাচিং এলিমেন্ট নোড ফেরৎ দেয় । কোনও মিলের নোড পাওয়া না গেলে নালটি ফেরত দেওয়া হয়।

querySelectorAll

নোডের সাবট্রির মধ্যে সমস্ত মিলে যাওয়া এলিমেন্ট নোডগুলি সহ একটি নোডলিস্ট , বা কোনও মিল খুঁজে পাওয়া না গেলে একটি খালি নোডলিস্ট প্রদান করে।

এবং

দ্রষ্টব্য: ফিরে আসা নোডলিস্ট querySelectorAll()লাইভ নয়, যার অর্থ ডিওমে পরিবর্তনগুলি সংগ্রহে প্রতিফলিত হয় না। এটি লাইভ নোড তালিকাগুলি ফিরে আসা অন্যান্য ডিওএম অনুসন্ধান পদ্ধতিগুলির থেকে পৃথক।


32
লাইভ নোড তালিকার পার্থক্য দেখানোর জন্য +1। আপনি কীভাবে ফলাফলগুলি ব্যবহার করতে চান তার উপর নির্ভর করে সচেতন হওয়া এটি একটি অত্যন্ত গুরুত্বপূর্ণ পার্থক্য।
জম্ব্বিয়ানো

7
"লাইভ" এর অর্থ ডিওএম রানটাইমে নোড যুক্ত এবং সেই নিউলি অ্যাডেড নোডে কাজ করতে পারে
ডাইচো

83

পার্থক্য সম্পর্কে তার মাঝে ফলাফলে গুরুত্বপূর্ণ এক querySelectorAllএবং getElementsByClassName: ফেরত মান ভিন্ন। querySelectorAllএকটি স্থিতিশীল সংগ্রহ প্রদান করবে, যখন getElementsByClassNameএকটি সরাসরি সংগ্রহ প্রদান করবে। আপনি যদি পরবর্তী ব্যবহারের জন্য ফলাফলগুলিকে ভেরিয়েবলের মধ্যে সংরক্ষণ করেন তবে এই বিভ্রান্তির সৃষ্টি হতে পারে:

  • দিয়ে তৈরি করা পরিবর্তনশীল querySelectorAllউপাদান আছে যা নির্বাচক পূর্ণ উপস্থিত থাকবে মুহূর্ত পদ্ধতি বলা হয় এ
  • এর সাথে উত্পন্ন একটি পরিবর্তনশীলটিতে getElementsByClassNameউপাদানগুলি অন্তর্ভুক্ত থাকবে যা নির্বাচকটি এটি ব্যবহার করার সময় পূরণ করেছিল (এটি পদ্ধতিটি বলা হওয়ার মুহুর্তের চেয়ে আলাদা হতে পারে)।

উদাহরণস্বরূপ, খেয়াল করুন কীভাবে আপনি ভেরিয়েবলগুলি পুনরায় স্বাক্ষর না করেও aux1এবং aux2ক্লাস আপডেট করার পরে এগুলিতে বিভিন্ন মান রয়েছে:

// storing all the elements with class "blue" using the two methods
var aux1 = document.querySelectorAll(".blue");
var aux2 = document.getElementsByClassName("blue");

// write the number of elements in each array (values match)
console.log("Number of elements with querySelectorAll = " + aux1.length);
console.log("Number of elements with getElementsByClassName = " + aux2.length);

// change one element's class to "blue"
document.getElementById("div1").className = "blue";

// write the number of elements in each array (values differ)
console.log("Number of elements with querySelectorAll = " + aux1.length);
console.log("Number of elements with getElementsByClassName = " + aux2.length);
.red { color:red; }
.green { color:green; }
.blue { color:blue; }
<div id="div0" class="blue">Blue</div>
<div id="div1" class="red">Red</div>
<div id="div2" class="green">Green</div>


2
কেবল উল্লেখ করার জন্য - সমস্ত পুরানো DOM এপিস নাম নোড তালিকার প্রত্যাবর্তন করবে document.getElementsByName, document.getElementsByTagNameNSবা document.getElementsByTagNameএকই আচরণ প্রদর্শন করবে।
আরবিটি

2
কিছু বিশ্লেষণ বলেছে যে ক্যোয়ারী নির্বাচনকারী এখানে getlumeById এর চেয়ে বেশি সময় নেয়, যেমন এখানে ডিমলুকাস . com/index.php/2016/09/17/… । যদি আমরা অ্যাকাউন্টে অ্যাক্সেসের সময় নিই? GetElementById থেকে প্রাপ্ত লাইভ নোডটি কি কোয়েলেসার থেকে স্ট্যাটিকের চেয়ে বেশি সময় নেয়?
এরিক

1
@ আরবিটি আমি উল্লেখ করেছি যে এই পুরাতন ডোম এপিআইগুলি নোডলিস্ট বস্তুগুলি ফেরত দেয় না, তারা এইচটিএমএল সংগ্রহগুলি ফেরত দেয়।
খিত

@ এরিক document.getElementById()লাইভ নোড ফেরায় না এটি document.querySelector('#id_here')সম্ভবত এটির চেয়ে দ্রুততর কারণ querySelectorপ্রথমে সিএসএস নির্বাচককে পার্স করতে হবে।
দুর্বৃত্ত

68

এই উত্তরটি জন্য, আমি পড়ুন querySelectorএবং querySelectorAllquerySelector যেমন * করুন এবং getElementById, getElementsByClassName, getElementsByTagName, এবং getElementsByNamegetElement যেমন *।

প্রধান পার্থক্য

  1. ক্যোয়ারী নির্বাচনকারী * আরও নমনীয়, যেহেতু আপনি এটি আইডি, ট্যাগ বা শ্রেণীর জন্য সহজ সাধারণগুলি নয়, কোনও সিএসএস 3 নির্বাচককে পাস করতে পারেন।
  2. ক্যোয়ারী নির্বাচনকারীদের কার্য সম্পাদন DOM এর আকারের সাথে এটি পরিবর্তিত হয় changes * সুনির্দিষ্টভাবে বলতে গেলে, ক্যোয়ারী নির্বাচনকারী * কলগুলি ও (এন) সময়ে চলবে এবং গেট এলিমেট * কলগুলি ও (1) সময়ে চলবে, যেখানে এন বা মৌলিক উপাদান বা নথির সমস্ত বাচ্চার মোট সংখ্যা is এই সত্যটি কমপক্ষে সুপরিচিত বলে মনে হচ্ছে, তাই আমি এটি বোল্ড করছি।
  3. getElement * ডম-এ সরাসরি রেফারেন্স কল করে, যেখানে ক্যোয়ারী নির্বাচনকারী * তাদের কাছে উল্লেখগুলি ফেরত দেওয়ার আগে নির্বাচিত উপাদানগুলির অনুলিপি তৈরি করে। এগুলিকে "লাইভ" এবং "স্ট্যাটিক" উপাদান হিসাবে উল্লেখ করা হয়। এটি যে ধরণের ফিরে আসে তার সাথে এটি কঠোরভাবে সম্পর্কিত নয়। কোনও উপাদান জীবিত বা স্থিতিশীল হয় কিনা তা জানার আমি জানার উপায় নেই, কারণ এটি কোনও সময়ে উপাদানটি অনুলিপি করা হয়েছিল কিনা এবং এটি ডেটার অভ্যন্তরীণ সম্পত্তি নয়। লাইভ উপাদানগুলিতে পরিবর্তনগুলি তাত্ক্ষণিকভাবে প্রয়োগ হয় - একটি লাইভ এলিমেন্ট পরিবর্তন করা সরাসরি ডম এ এটি পরিবর্তন করে এবং অতএব জেএসের একেবারে পরবর্তী লাইনটি সেই পরিবর্তনটি দেখতে পারে এবং এটি তত্ক্ষণাত সেই উপাদানটিকে উল্লেখ করে অন্য যে কোনও লাইভ উপাদানগুলিতে প্রচার করে। বর্তমান স্ক্রিপ্টটি সম্পাদন শেষ হওয়ার পরে স্থির উপাদানগুলিতে পরিবর্তনগুলি কেবল DOM এ ফিরে লেখা হয়।
  4. এই কলগুলির রিটার্নের ধরনগুলি পৃথক হয়। querySelectorএবং getElementByIdউভয়ই একটি একক উপাদান ফেরত দেয়। querySelectorAllএবং getElementsByNameউভয়ই নোডলিস্টগুলি ফেরত দেয়, এইচটিএমএল কালেকশন পরে ফ্যাশন থেকে বেরিয়ে যাওয়ার পরে যুক্ত হওয়া আরও নতুন ফাংশন। পুরানো getElementsByClassNameএবং getElementsByTagNameউভয়ই এইচটিএমএল সংগ্রহ সংগ্রহ করে। আবার, এটি উপাদানগুলি লাইভ বা স্থির কিনা তা মূলত অপ্রাসঙ্গিক।

এই ধারণাগুলি সংক্ষিপ্ত বিবরণ নিম্নলিখিত টেবিলে দেওয়া হয়েছে।

Function               | Live? | Type           | Time Complexity
querySelector          |   N   | Element        |  O(n)
querySelectorAll       |   N   | NodeList       |  O(n)
getElementById         |   Y   | Element        |  O(1)
getElementsByClassName |   Y   | HTMLCollection |  O(1)
getElementsByTagName   |   Y   | HTMLCollection |  O(1)
getElementsByName      |   Y   | NodeList       |  O(1)

বিশদ, টিপস এবং উদাহরণ

  • এইচটিএমএল সংগ্রহগুলি নোডলিস্টগুলির মতো অ্যারের মতো নয় এবং .EachEach () সমর্থন করে না। আমি এর চারপাশে কাজ করার জন্য স্প্রেড অপারেটরটিকে দরকারী বলে মনে করি:

    [...document.getElementsByClassName("someClass")].forEach()

  • প্রতিটি উপাদান এবং বিশ্বব্যাপী এর documentব্যতীত এই সমস্ত ফাংশনে অ্যাক্সেস পায় getElementByIdএবং getElementsByNameযা কেবলমাত্র প্রয়োগ করা হয় document

  • ক্যুইনসিলেক্টর * ব্যবহারের পরিবর্তে গেইলইলিমেন্ট * কলগুলি চেইন করা কার্যকারিতা উন্নত করবে, বিশেষত খুব বড় ডিওএমগুলিতে। এমনকি ছোট ডিওএম এবং / অথবা খুব দীর্ঘ চেইন সহ, এটি সাধারণত দ্রুত হয়। তবে, আপনি যদি না জানেন যে আপনার পারফরম্যান্সের দরকার নেই, ক্যোয়ারী নির্বাচনকারী * এর পাঠ্যতা পছন্দ করা উচিত। querySelectorAllপুনরায় লেখার জন্য প্রায়শই কঠিন, কারণ আপনাকে অবশ্যই প্রতিটি পদক্ষেপে নোডলিস্ট বা এইচটিএমএল সংগ্রহ থেকে উপাদান নির্বাচন করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত কোডটি কাজ করে না :

document.getElementsByClassName("someClass").getElementsByTagName("div")

because you can only use getElements* on single elements, not collections. For example:

`document.querySelector("#someId .someClass div")`

could be written as:

document.getElementById("someId").getElementsByClassName("someClass")[0].getElementsByTagName("div")[0]

Note the use of `[0]` to get just the first element of the collection at each step that returns a collection, resulting in one element at the end just like with `querySelector`.
  • যেহেতু সমস্ত উপাদানগুলির ক্যোয়ারী নির্বাচনকারী * এবং গেট এলিমেট * কল উভয়ের অ্যাক্সেস রয়েছে, আপনি উভয় কল ব্যবহার করে চেইন তৈরি করতে পারেন যা আপনি কিছুটা পারফরম্যান্স লাভ পেতে চাইলে দরকারী হতে পারে তবে একটি ক্যোয়ারীর নির্বাচন এড়াতে পারবেন না যা getElement * কলগুলির ক্ষেত্রে লেখা যায় না can ।

  • যদিও কেবলমাত্র ইলেমেট * কল ব্যবহার করে কোনও নির্বাচককে লেখা যায় কিনা তা সাধারণভাবে বলা সহজ, একটি ক্ষেত্রে রয়েছে যা সুস্পষ্ট নাও হতে পারে:

    document.querySelectorAll(".class1.class2")

    হিসাবে আবার লিখতে পারেন

    document.getElementsByClassName("class1 class2")

  • কোয়েরিলেক্টরের সাথে যুক্ত স্ট্যাটিক উপাদানটিতে getElement * ব্যবহার করার ফলে এমন একটি উপাদান তৈরি হবে যা ডিওএমের স্ট্যাটিক উপসেটটি ক্যোয়ারী নির্বাচনকারী দ্বারা অনুলিপি করা হয়েছে, তবে পুরো ডকুমেন্ট ডিওএম-এর সাথে সম্মান সহ বাস করবে না ... এটিই সাধারণ উপাদানগুলির লাইভ / স্ট্যাটিক ব্যাখ্যা পৃথক হতে শুরু করে। আপনার সম্ভবত এই পরিস্থিতি এড়াতে হবে যেখানে আপনার এই চিন্তিত হতে হবে, তবে আপনি যদি মনে করেন তবে মনে রাখবেন যে ক্যোয়ারী নির্বাচনকারী * তাদের কাছে রেফারেন্সগুলি ফিরিয়ে দেওয়ার আগে তাদের খুঁজে পাওয়া অনুলিপিগুলিকে কল করে, তবে getElement * কল করে অনুলিপি ছাড়াই সরাসরি রেফারেন্স আনবে।

  • একাধিক মিল থাকলে কোন উপাদানটি প্রথমে নির্বাচন করা উচিত তা উভয়ই এপিআই নির্দিষ্ট করে না।

  • যেহেতু ক্যোয়ারিলেক্টর * ডিওএম-এর মাধ্যমে কোনও মিল খুঁজে না পাওয়া পর্যন্ত পুনরাবৃত্তি করে (মূল পার্থক্য # 2 দেখুন), উপরেরটি এও বোঝায় যে আপনি DOM এ খুঁজছেন এমন কোনও গ্যারান্টির জন্য এটি খুঁজে পেয়েছে যে এটি দ্রুত পাওয়া গেছে - ব্রাউজারটি ডিওএমের মাধ্যমে পিছনের দিকে, সম্মুখভাগে, গভীরতা প্রথমে, প্রথম প্রস্থে বা অন্যথায় পুনরাবৃত্তি করতে পারে। getElement * এখনও নির্ধারিত নির্বিশেষে প্রায় একই পরিমাণে উপাদানগুলি খুঁজে পেতে পারে।


4
এই বিষয়ে এখন পর্যন্ত সবচেয়ে সুনির্দিষ্ট উত্তর। আরও upvated করা উচিত।
সিওয়ারারিওর 404

আপনার ব্লগে সাশা
থিকিং 2

25

পারফরম্যান্সের ক্ষেত্রে ব্যবহারের আরও ভাল পদ্ধতিটি নির্ধারণ করার জন্য আমি খালি এই পৃষ্ঠায় এসেছি - যা দ্রুততর:

querySelector / querySelectorAll or getElementsByClassName

এবং আমি এটি পেয়েছি: https://jsperf.com/getelementsbyclassname-vs-queryselectorall/18

এটি উপরের দুটি এক্স উদাহরণগুলির উপর একটি পরীক্ষা চালায়, এবং এটি jQuery এর সমতুল্য নির্বাচক হিসাবেও পরীক্ষা করে। আমার পরীক্ষার ফলাফল নিম্নলিখিত ছিল:

getElementsByClassName = 1,138,018 operations / sec - <<< clear winner
querySelectorAll = 39,033 operations / sec
jquery select = 381,648 operations / sec

1
বাহ, এটি একটি বিশাল পার্থক্য, এটি সন্ধানের জন্য ধন্যবাদ। স্পষ্টতই querySelectorAllপর্দার পিছনে অতিরিক্ত কাজ প্রয়োজন (নির্বাচক এক্সপ্রেশনকে পার্স করা, ছদ্ম উপাদানগুলির জন্য অ্যাকাউন্টিং ইত্যাদি while), যদিও getElementsByClassNameএটি কেবল একটি পুনরাবৃত্ত বস্তু ট্র্যাভারসাল।
জন ওয়েইজ

18

querySelector একটি সম্পূর্ণ সিএসএস (3) হতে পারে - আইডি এবং ক্লাস এবং সিউডো-ক্লাসিস সহ একসাথে এর মতো নির্বাচক:

'#id.class:pseudo'

// or

'tag #id .class .class.class'

আপনার সাথে getElementByClassNameকেবল একটি শ্রেণি সংজ্ঞায়িত করতে পারেন

'class'

আপনার সাথে getElementByIdএকটি আইডি সংজ্ঞায়িত করতে পারেন

'id'

1
:firstএখন কি সিএসএস নির্বাচক? :first-class, বা :first-of-typeহতে পারে, তবে আমি ভেবেছিলাম :firstএকটি জাভাস্ক্রিপ্ট / jQuery / সিজল সংযোজন।
ডেভিড বলেছেন মনিকা

@ ডেভিড থমাস হ্যাঁ এটি, এটি CSS3 এর অংশ। এটি এর মতো ব্যবহার করা যেতে পারে: css-tricks.com/almanac/selectors/f/first-child
আলগোরিদিম

2
কিন্তু :first, লক্ষণীয়, না :first-child
ডেভিড বলেছেন মনিকা

3
"লেখকদের পরামর্শ দেওয়া হচ্ছে যে নির্বাচকদের ক্ষেত্রে ছদ্ম-উপাদানগুলির ব্যবহারের অনুমতি দেওয়া হলেও তারা নথির কোনও উপাদানের সাথে মেলে না এবং ফলস্বরূপ কোনও উপাদানগুলির ফলস্বরূপ ফল পাওয়া যায় না Therefore সুতরাং লেখকদের সিউডো- ব্যবহার এড়াতে পরামর্শ দেওয়া হচ্ছে নির্বাচকদের উপাদানগুলি যা এই নির্দিষ্টকরণে সংজ্ঞায়িত পদ্ধতিগুলিতে পাস হয় passed " w3.org/TR/selectors-api/#grammar
সমৃদ্ধ remer

এছাড়াও, আইই (অবশ্যই) এর মধ্যে একটি ত্রুটি রয়েছে যার ফলে সিউডো-এলিমেন্টগুলি নির্বাচন করার সময় খালি উপাদান তালিকার পরিবর্তে মূল html উপাদানটি ফিরে আসে।
সমৃদ্ধ পুনরায়

7

querySelectorএবং querySelectorAllএকটি তুলনামূলকভাবে নতুন এপিআই, যদিও getElementByIdএবং getElementsByClassNameআমাদের সাথে আরও দীর্ঘকাল ধরে রয়েছে। এর অর্থ হ'ল আপনি যা ব্যবহার করেন তা নির্ভর করে আপনার কোন ব্রাউজারগুলিকে সমর্থন করা প্রয়োজন on

হিসাবে :, এটির একটি বিশেষ অর্থ রয়েছে তাই আপনাকে যদি এটি কোনও আইডি / শ্রেণির নামের অংশ হিসাবে ব্যবহার করতে হয় তবে আপনাকে এড়াতে হবে।


13
এটি অগত্যা সত্য নয়। উদাহরণস্বরূপ, querySelectorAllআইই 8 এ উপলব্ধ, যদিও getElementsByClassNameনেই।
ডেভজে

querySelectorAll... মূলত সবকিছু: caniuse.com/#search=querySelectorAll
dsdsdsdsd


5

querySelectorw3c সিলেক্টর এপিআই এর

getElementByডাব্লু 3 সি ডম এপিআই এর

আইএমও সবচেয়ে উল্লেখযোগ্য পার্থক্য হ'ল রিটার্নের querySelectorAllধরণটি একটি স্ট্যাটিক নোড তালিকা এবং getElementsByএটির জন্য একটি লাইভ নোড তালিকা। সুতরাং ডেমো 2 এর লুপিং কখনই শেষ lisহয় না কারণ এটি লাইভ এবং প্রতিটি পুনরাবৃত্তির সময় আপডেট হয়।

// Demo 1 correct
var ul = document.querySelectorAll('ul')[0],
    lis = ul.querySelectorAll("li");
for(var i = 0; i < lis.length ; i++){
    ul.appendChild(document.createElement("li"));
}

// Demo 2 wrong
var ul = document.getElementsByTagName('ul')[0], 
    lis = ul.getElementsByTagName("li"); 
for(var i = 0; i < lis.length ; i++){
    ul.appendChild(document.createElement("li")); 
}

4

"ক্যোয়ারী নির্বাচনকারী" এবং "ক্যোয়ারী নির্বাচনকারী সমস্ত" এর মধ্যে পার্থক্য

//querySelector returns single element
let listsingle = document.querySelector('li');
console.log(listsingle);


//querySelectorAll returns lit/array of elements
let list = document.querySelectorAll('li');
console.log(list);


//Note : output will be visible in Console
<ul>
<li class="test">ffff</li>
<li class="test">vvvv</li>
<li>dddd</li>
<li class="test">ddff</li>
</ul>


2

এটা দেখ

https://codepen.io/bagdaulet/pen/bzdKjL

কোয়ালিটির চেয়ে দ্রুততম এলিমেটবাইআইডি পান নির্বাচনকারী 25%

jquery সবচেয়ে ধীর

var q = time_my_script(function() {

    for (i = 0; i < 1000000; i++) {
         var w = document.querySelector('#ll');
    }

});

console.log('querySelector: '+q+'ms');

-3

ক্যোয়ারিলেক্টর এবং গেটমেন্টবিআইডি (ক্লাসনাম, ট্যাগ নাম ইত্যাদি) এর মধ্যে প্রধান পার্থক্য হ'ল শর্ত কোয়েরিটি সন্তুষ্টকারী একাধিক উপাদান থাকলে নির্বাচনকারী কেবলমাত্র একটি আউটপুট ফিরে আসবে যখন getElementBy * সমস্ত উপাদানকে ফিরিয়ে দেবে।

এটি আরও স্পষ্ট করার জন্য একটি উদাহরণ বিবেচনা করি।

 <nav id="primary" class="menu">
                            <a class="link" href="#">For Business</a>
                            <a class="link" href="#">Become an Instructor</a>
                            <a class="link" href="#">Mobile Applications</a>
                            <a class="link" href="#">Support</a>
                            <a class="link" href="#">Help</a>
   </nav> 

কোডের নীচে পার্থক্যটি ব্যাখ্যা করবে

**QUERY SELECTOR**
document.querySelector('.link'); // Output : For Business (element)

document.querySelectorAll('.link'); //Out All the element with class link

**GET ELEMENT**
document.getElementsByClassName('link') // Output : will return all the element with a class "link" but whereas in query selector it will return only one element which encounters first.

যদি আমরা একক উপাদান নির্বাচন করতে চাই তবে কোয়েরিলেক্টরের জন্য যান বা যদি আমরা একাধিক উপাদান পেতে চাইলে গেম এলিমেন্টে যেতে চাই In


1
getElementById কেবল একটি উপাদান ফেরত দেয়, এটি মোটেই দুজনের মধ্যে পার্থক্য নয়।
টিমোফিয়ে 'সাশা' কোন্ড্রাশভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.