Kodokon kodokon.com

السمات العامة و data-*

استفد من السمات التي تعمل في كل مكان وخزّن بياناتك الخاصة داخل الـ HTML.

7 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

بعض السمات تعمل على أي عنصر: هذه هي السمات العامة. أنت تستخدم بالفعل id و class؛ أضف إلى صندوق أدواتك hidden (يخفي العنصر) و lang (يشير إلى لغة مقطع) و title (تلميح عند التمرير) و tabindex (ترتيب تركيز لوحة المفاتيح).

HTML
<p lang="en" title="Original quote">
  Stay hungry, stay foolish.
</p>

<div hidden id="cookie-banner" class="banner">
  We use cookies.
</div>
lang و title و hidden في موقف واقعي.

تحتاج إلى إرفاق بياناتك الخاصة بعنصر؟ لا تخترع أبدًا سمة من عندك: يحجز HTML سمات data-* لهذا الغرض بالضبط. تختار الاسم بعد الشرطة، بأحرف صغيرة بأسلوب kebab-case. حالات استخدام نموذجية: معرّف منتج، حالة واجهة، إعداد مكوّن.

HTML
<article
  class="product-card"
  data-product-id="42"
  data-category="books"
  data-in-stock="true"
>
  <h2>HTML for pros</h2>
</article>
بيانات عمل مرفقة ببطاقة منتج.

على جانب جافاسكريبت، تُقرأ هذه السمات عبر خاصية dataset. انتبه إلى التحويل التلقائي: يتحول أسلوب kebab-case في HTML إلى camelCase في جافاسكريبت. فـ data-product-id يُقرأ بـ dataset.productId. القيم دائمًا سلاسل نصية، حتى "true" أو "42".

JAVASCRIPT
const card = document.querySelector(".product-card");

console.log(card.dataset.productId); // "42"
console.log(card.dataset.inStock);   // "true"

card.dataset.state = "selected";
قراءة وكتابة data-* عبر dataset.

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. كيف تقرأ سمة data-user-id في جافاسكريبت؟
    • element.dataset.userId
    • element.dataset.user-id
    • element.data.userId
    • element.getData("user-id")
  2. ما الغرض من سمات data-*؟
    • تخزين بيانات مخصصة يمكن لجافاسكريبت قراءتها
    • تسريع تحميل بيانات الصفحة
    • إرسال البيانات إلى الخادم عند إرسال نموذج
  3. أي سمة عامة تخفي عنصرًا دلاليًا؟
    • hidden
    • invisible
    • display