🟦 أولاً: التعامل مع المحتوى (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() |