راکت

تفاوت دو دستور

7 پاسخ

اقا دستور

getElemetById/Class

فرقش با

querySelectorAll  

چیه؟؟؟

ثبت پرسش جدید

پاسخ‌ها

7
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

getElemetById/Class در این دو تابع، عنصر مورد نظر براساس شناسه/نام کلاس پیدا میشه و انتخاب میشه (بصورت جدا از هم).
اما تابع querySelector تابع قوی تری هستش که بعدها اومد تا کار رو ساده تر کنه، این انتخابگر شبیه به انتخابگرهای css هستش و به مانند انتخابگرهای داخل css میتونید عناصر سند html رو پیدا کنید.

شاید پاسخ شما همین‌جا باشد

elyas
elyas
@elias

تخصص: آموزگار و برنامه نويس مبتدي

داداش
getElemetsByTag هم همونه و میشه به همین getElement هم استایل داد
تازه کلا دارم یاد میگیرم میخوام ببینم تفاوتی و ویژگی های هرکدوم چیه بالاخرخ باید به یه درد متفاوتی بخورن مثل let & var
@milad

سید حسین رضوی
سید حسین رضوی
@hossein.r.1442

تخصص: برنامه نویس وب و طراح رابط کاربری

توی getElementById یا کلاس شما براساس نام کلاس یا نام آی دی میتونی یه المنت دسترسی داشته باشی اما توی کوئری سلکتور میتونی براساس سلکتور های سی اس اس هم دسترسی داشته باشی مثلا

p.className #id
میلاد-م
میلاد-م
@milad

تخصص: توسعه‌دهنده رابط کاربری - Front-End

همشون بمنظور انتخاب عناصر بکار گرفته میشن.
تفاوتش هم ذکر شدش.
شما در getElemetById براساس شناسه عنصر، اون رو انتخاب میکنی، ولی مثلا براساس نام کلاس نمیتونی انتخابش کنی.
شما در getElemetsByTag براساس برچسب عنصر، اون رو انتخاب میکنی، ولی مثلا براساس نام کلاس نمیتونی انتخابش کنی.
شما در getElementClass براساس نام کلاس های اون عنصر، اون رو انتخاب میکنی، ولی مثلا براساس شناسه عنصر نمیتونی انتخابش کنی.

اما تابع querySelector بعد از اینها بوجود اومده و تابع قوی تری هستش و براساس انتخابگرهای css میتونی عنصر موردنظرت رو پیدا کنی. یعنی هم براساس شناسه عنصر میشه، هم نام کلاس، هم نام برچسب، هم ویژگی عنصر و ...

ParsaOne
ParsaOne
@ParsaOne

سلام.منم این سوال برام پیش اومد و رفتم دنبالش اما راستش توی اکثر منابع فارسی و انگلیسی توضیح درستی ندادن.
آخر سر خودم نشستم و تک تک حالتهاشو بررسی کردم و به این نتیجه رسیدم که با هم توی نتیجه کار فرق دارن.
شاید نتایج به هم نزدیک باشن ولی توی کار همین تفاوتای کوچیک میتونه باگهای مسخره و اذیت کنی داشته باشه.
تمام حالات رو میزارم تا خودت بررسی کنی و متوجه بشی...
HTML:

<div id="ID"> <div class="Class">SimpleText </div> </div>

Script:

const ElementByGet = document.getElementById('ID');  
const ElementByQuery = document.querySelector('#ID');  
const ElementBarByGetByGet = ElementByGet.getElementsByClassName('Class');  
const ElementBarByGetByQuery = ElementByGet.querySelector('.Class');  
const ElementBarByQueryByGet = ElementByQuery.getElementsByClassName('.Class');  
const ElementBarByQueryByQuery = ElementByQuery.querySelector('.Class');

console.log( 'Log1' , ElementByGet , ElementByGet === ElementByQuery);  
console.log( 'Log2' , ElementBarByGetByGet , ElementBarByGetByQuery , ElementBarByGetByGet == ElementBarByGetByQuery);  
console.log( 'Log3' , ElementBarByQueryByGet , ElementBarByQueryByQuery , ElementBarByQueryByGet == ElementBarByQueryByQuery);  
console.log( 'Log4' , ElementBarByGetByGet , ElementBarByQueryByGet , ElementBarByGetByGet == ElementBarByQueryByGet);  
console.log( 'Log5' , ElementBarByGetByQuery , ElementBarByQueryByQuery , ElementBarByGetByQuery == ElementBarByQueryByQuery);  

Log:

Script.js:40 Log1 <div id=​"ID">​…​</div>​<div class=​"Class">​SimpleText ​</div>​</div>​ true

Script.js:41 Log2 HTMLCollection [div.Class]0: div.Classlength: 1[[Prototype]]: HTMLCollection <div class=​"Class">​SimpleText ​</div>​ false

Script.js:42 Log3 HTMLCollection []length: 0[[Prototype]]: HTMLCollection <div class=​"Class">​SimpleText ​</div>​ false

Script.js:43 Log4 HTMLCollection [div.Class]0: div.Classlength: 1[[Prototype]]: HTMLCollection HTMLCollection []length: 0[[Prototype]]: HTMLCollection false

Script.js:44 Log5 <div class=​"Class">​SimpleText ​</div>​ <div class=​"Class">​SimpleText ​</div>​ true
ASPgo
ASPgo
@asp.gosk

تخصص: HTML، CSS، PHP و JS، طراح قالب و افزونه وردپرس، سئوکار و مقاله نویس

ببین تابع های getElemetById یا getElemetByClass مخصوصا برای پیدا کردن یه المنت با یه Class/ID ساخته شدن.
اما با queryselector و queryselectorall میتونی مثل CSS المنت ها رو انتخاب کنی. مثلا:

document.querySelector('#id.class-name[attribute-name]');

حالا تفاوتی که بین querySelectorAll و querySelector وجود داره اینکه querySelectorAll همه المنت هایی که اون مشخصات رو دارن(مثلا یه class مشترک) رو انتخاب(Select) میکنه اما querySelector فقط یکیشونو انتخاب میکنه

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام