🟦 أولاً: التعامل مع المحتوى (Content)
يوجد 3 خصائص أساسية للتحكم في محتوى العناصر:
| الخاصية | الوصف | تقرأ النص؟ | تكتب نص؟ | تقرأ HTML؟ | تكتب HTML؟ |
|---|---|---|---|---|---|
textContent | النص فقط | ✅ | ✅ | ❌ | ❌ |
innerText | النص المعروض (أشبه بـ CSS visible) | ✅ | ✅ | ❌ | ❌ |
innerHTML | كل ما بداخل العنصر (HTML + نص) | ✅ | ✅ | ✅ | ✅ |
✅ 1. textContent
- يُستخدم لقراءة أو تعديل النص فقط داخل العنصر، بدون أي HTML.
<p id="para">مرحبًا <strong>بك</strong></p>
const p = document.getElementById("para");
console.log(p.textContent); // "مرحبًا بك"
p.textContent = "نص جديد"; // يغير المحتوى كله إلى "نص جديد"
JavaScript✅ 2. innerText
- مثل
textContentلكن يأخذ في الاعتبار التنسيق المرئي (CSS مثلdisplay: none) - أبطأ قليلاً
console.log(p.innerText);
p.innerText = "تم التحديث بالنص";JavaScript✅ الفرق باختصار:
| الخاصية | الوصف |
|---|---|
textContent | تجلب كل النص داخل العنصر حتى لو مخفيًا بـ CSS |
innerText | تجلب النص الظاهر فقط للمستخدم (يتأثر بـ CSS مثل display: none أو visibility: hidden) |
📌 مثال عملي بـ CSS:
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<style>
.hidden {
display: none;
}
</style>
</head>
<body>
<div id="test">
هذا نص ظاهر
<span class="hidden">وهذا نص مخفي</span>
</div>
<script>
let el = document.getElementById("test");
console.log("textContent:", el.textContent);
console.log("innerText:", el.innerText);
</script>
</body>
</html>
JavaScript🔍 التفسير:
textContentجلب كل النص داخل العنصر، سواء كان ظاهرًا أو مخفيًا.innerTextتجاهل النص الموجود داخل العنصر.hiddenلأنdisplay: noneيمنعه من الظهور، وبالتالي لا يُعتبر جزءًا من النص المرئي.
⚠️ ملاحظة تقنية:
innerTextأبطأ منtextContentلأنه يعيد الحساب بناءً على تنسيق الصفحة الظاهري (layout).- لذا إن كنت لا تهتم بما هو مرئي للمستخدم، استخدم
textContent.
✅ 3. innerHTML
- يُستخدم لقراءة أو كتابة المحتوى بما في ذلك الوسوم (Tags)
console.log(p.innerHTML); // "مرحبًا <strong>بك</strong>"
p.innerHTML = "مرحبا <em>بك</em> مرة أخرى";JavaScript🟦 ثانيًا: التعامل مع السمات (Attributes)
✅ طرق التعامل:
| الطريقة | الوصف |
|---|---|
getAttribute(name) | للحصول على قيمة السمة |
setAttribute(name, value) | لتعيين أو تحديث السمة |
removeAttribute(name) | لإزالة السمة |
hasAttribute(name) | يتحقق إذا كانت السمة موجودة |
<img id="logo" src="logo.png" alt="شعار الموقع" width="200" />
//////////////////////////
const img = document.getElementById("logo");
// قراءة السمات
console.log(img.getAttribute("src")); // "logo.png"
console.log(img.getAttribute("alt")); // "شعار الموقع"
// تعديل السمات
img.setAttribute("src", "new-logo.png");
img.setAttribute("alt", "شعار جديد");
// التحقق من وجود سمة
console.log(img.hasAttribute("width")); // true
// إزالة سمة
img.removeAttribute("width");JavaScript🟦 ثالثًا: طريقة مختصرة باستخدام خصائص مباشرة لبعض السمات الشائعة
بعض السمات يمكن التعامل معها كمتغيرات مباشرة:
const link = document.querySelector("a");
link.href = "https://google.com";
link.target = "_blank";
link.textContent = "اذهب إلى جوجل";JavaScript🟨 ملخص عملي:
| النوع | طريقة القراءة | طريقة التعديل |
|---|---|---|
| نص فقط | element.textContent | element.textContent = "..." |
| HTML كامل | element.innerHTML | element.innerHTML = "..." |
| سمة Attribute | element.getAttribute("name") | element.setAttribute("name", "value") |
| خاصية مباشرة | element.href, element.src | element.href = "..." |
✅ ما هي السمة (Attribute)؟
السمة (Attribute) هي خاصية داخل وسم HTML توضح معلومات إضافية.
مثال:
<input type="text" id="username" placeholder="اكتب اسمك" required />JavaScripttype,id,placeholder,required→ كلها سمات- نحتاج أحيانًا في الجافاسكربت أن نعرف:
- هل السمة موجودة؟
- ما قيمتها؟
- هل يجب تعديلها أو حذفها؟
🟦 طرق التحقق من السمات في JavaScript
1. hasAttribute(name)
يتحقق هل السمة موجودة أم لا (ترجع true أو false)
2. getAttribute(name)
تُرجع قيمة السمة إذا كانت موجودة، أو null إذا لم تكن.
3. hasAttributes()
تتحقق هل لدى العنصر أي سمات على الإطلاق، وليس سمة معينة.
✅ مثال عملي شامل
<input type="text" id="username" placeholder="اسم المستخدم" required />
const input = document.getElementById("username");
// التحقق من وجود سمة
console.log(input.hasAttribute("placeholder")); // true
console.log(input.hasAttribute("maxlength")); // false
// الحصول على قيمة السمة
console.log(input.getAttribute("placeholder")); // "اسم المستخدم"
console.log(input.getAttribute("type")); // "text"
// التحقق من وجود أي سمات
console.log(input.hasAttributes()); // true (لديه عدة سمات)
JavaScript🟨 استخدام داخل الشروط:
if (input.hasAttribute("required")) {
console.log("هذا الحقل مطلوب!");
}JavaScript🔸 ملاحظات مهمة:
| دالة | ماذا تُرجع؟ | تستخدم مع |
|---|---|---|
hasAttribute("name") | true أو false | هل السمة موجودة |
getAttribute("name") | القيمة أو null | قراءة السمة |
hasAttributes() | true أو false | هل يوجد أي سمة على الإطلاق |
✅ مثال واقعي مع زر:
<button id="sendBtn" disabled>إرسال</button>
const btn = document.getElementById("sendBtn");
if (btn.hasAttribute("disabled")) {
console.log("الزر معطّل حالياً");
}
console.log(btn.getAttribute("disabled")); // "" (قيمة فارغة، لكنها موجودة)
JavaScript🟩 تلخيص:
| الوظيفة | الكود |
|---|---|
| هل السمة موجودة؟ | element.hasAttribute("name") |
| ما قيمة السمة؟ | element.getAttribute("name") |
| هل العنصر يحتوي على أي سمات؟ | element.hasAttributes() |