جاوااسکریپت - querySelector در مقابل getElementById
من شنیدهام که querySelector و querySelectorAll روشهای جدیدی برای انتخاب عناصر DOM هستند. از نظر عملکرد و پشتیبانی مرورگر، این روشها چگونه با روشهای قدیمیتر، getElementById و getElementsByClassName مقایسه میشوند؟
عملکرد نسبت به استفاده از انتخابگر query در jQuery چگونه است؟
تفاوت بین querySelector و getElementById چیست؟ کی باید از querySelector به جای getElementById استفاده کنیم؟ آیا مثالی وجود دارد که با getElementById امکانپذیر نباشد؟
پاسخ شماره ۱
«بهتر» نسبی است.
querySelector ویژگی جدیدتر است.
getElementById بیشتر از querySelector پشتیبانی میشود (که البته امروز چندان اهمیتی ندارد، چند سال بعد از زمانی که این جواب در اصل نوشته شد).
querySelectorAll بیشتر از getElementsByClassName پشتیبانی میشود اما querySelectorAll یک لیست گره ایستا به شما میدهد در حالی که getElementsByClassName یک لیست گره زنده به شما میدهد.
querySelector به شما اجازه میدهد عناصری را پیدا کنید که با getElementById و getElementsByClassName نمیتوان آنها را با قوانین بیان کرد
شما باید ابزار مناسب برای هر وظیفهای را انتخاب کنید.
(در موارد بالا، برای querySelector بخوانید querySelector/querySelectorAll).
پاسخ شماره ۲
توابع getElementById و getElementsByClassName بسیار خاص هستند، در حالی که querySelector و querySelectorAll پیچیدهتر هستند. حدس من این است که در واقع عملکرد بدتری خواهند داشت.
همچنین، شما نیاز دارید تا پشتیبانی هر تابع را در مرورگرهایی که هدف قرار دادهاید بررسی کنید. هرچه نسخه جدیدتر باشد، احتمال عدم پشتیبانی یا ناقص بودن تابع بیشتر است.