الوصول لخصائص العناصر في لغة JavaScript
يا هلا بالجميع! اليوم بنشوف كيف نقدر نوصل لخصائص أي عنصر HTML في صفحتنا باستخدام JavaScript. الموضوع سهل ومهم جداً عشان تتفاعل مع الصفحة.
أول شيء: كيف نوصل للعنصر نفسه؟
قبل ما نوصل لخصائص العنصر، لازم نوصل للعنصر نفسه! فيه طرق كثيرة، أشهرها:
document.getElementById('someId'): لو العنصر عندهidفريد.document.querySelector('.someClass')أوdocument.querySelector('div'): يرجع أول عنصر يطابق المحدد (CSS Selector).document.querySelectorAll('.someClass'): يرجع كل العناصر اللي تطابق المحدد كمصفوفة (NodeList).
مثال سريع:
const myDiv = document.getElementById('myAwesomeDiv');
console.log(myDiv); // بيطبع لك العنصر كله في الكونسول
طيب، كيف نوصل لخصائص العنصر؟
بمجرد ما توصل للعنصر، تقدر توصل لأي خاصية فيه باستخدام نقطة (.) وبعدها اسم الخاصية. زي كذا: element.propertyName.
أمثلة على خصائص شائعة:
1. id و className
عشان تقرأ أو تعدل الـ id أو الـ class الخاص بالعنصر:
const myElement = document.getElementById('myElement');
// قراءة الـ ID
console.log(myElement.id); // بيطبع 'myElement'
// قراءة الـ Class
console.log(myElement.className); // بيطبع كل الكلاسات كـ String
// تعديل الـ ID (نادراً ما تحتاجها)
myElement.id = 'newId';
// تعديل الـ Class (هنا بتستبدل كل الكلاسات القديمة)
myElement.className = 'newClass anotherClass';
// ملاحظة: لو بتضيف أو تحذف كلاس معين بدون ما تأثر على الباقي، استخدم <code dir="ltr" style="background:#f3f4f6; color:#0056b3; padding:2px 6px; border-radius:4px; font-family:monospace; direction:ltr !important; display:inline-block;">classList</code>:
myElement.classList.add('active');
myElement.classList.remove('inactive');
myElement.classList.toggle('highlight'); // يضيفه لو مو موجود، يحذفه لو موجود
2. innerHTML و textContent
هذي عشان تتعامل مع المحتوى النصي أو HTML اللي داخل العنصر:
innerHTML: يجيب أو يغير كل المحتوى اللي داخل العنصر، بما فيه وسوم HTML.textContent: يجيب أو يغير المحتوى النصي فقط، ويتجاهل أي وسوم HTML.
const myParagraph = document.getElementById('myParagraph');
// قراءة المحتوى
console.log(myParagraph.innerHTML); // بيجيب كل HTML اللي جواته
console.log(myParagraph.textContent); // بيجيب النص بس
// تعديل المحتوى
myParagraph.innerHTML = 'مرحباً <strong>يا عالم</strong>!';
myParagraph.textContent = 'هذا نص عادي.';
ملاحظة مهمة: استخدام
innerHTMLلإدخال محتوى من المستخدم ممكن يسبب مشاكل أمنية (XSS). انتبه!
3. value
خاصية value تستخدم لعناصر مثل <input>, <textarea>, و <select> عشان تقرأ أو تعدل القيمة المدخلة فيها.
const myInput = document.getElementById('myInput');
// قراءة القيمة
console.log(myInput.value);
// تعديل القيمة
myInput.value = 'قيمة جديدة';
4. src و href
للعناصر اللي عندها مسار زي <img> (خاصية src) أو <a> (خاصية href).
const myImage = document.getElementById('myImage');
const myLink = document.getElementById('myLink');
// قراءة المسار
console.log(myImage.src);
console.log(myLink.href);
// تعديل المسار
myImage.src = 'new_image.jpg';
myLink.href = 'https://www.google.com';
5. style
هذي الخاصية تسمح لك تعدل على الـ CSS الخاص بالعنصر مباشرة من JavaScript. كل خاصية CSS تكتبها بنمط camelCase.
const myButton = document.getElementById('myButton');
// تعديل لون الخلفية
myButton.style.backgroundColor = '#007bff';
// تعديل لون النص
myButton.style.color = 'white';
// تعديل حجم الخط
myButton.style.fontSize = '16px';
// إضافة أكثر من خاصية (مثلاً، Border Radius)
myButton.style.borderRadius = '5px';
نصيحة: الأفضل غالباً إنك تعدل على الكلاسات (باستخدام
classList) بدل ما تعدل على الـstyleمباشرة، عشان تخلي الـ CSS حقك مرتب ومنظم.
مثال شامل:
شوف هالمثال كيف نستخدم كم خاصية مع بعض:
// HTML
/*
<div id="card">
<h2 id="cardTitle">بطاقة مميزة</h2>
<img id="cardImage" src="placeholder.png" alt="صورة توضيحية" style="width:100px;">
<p id="cardDescription">هنا وصف مختصر للبطاقة.</p>
<button id="cardButton">اضغط هنا</button>
</div>
*/
// JavaScript
const card = document.getElementById('card');
const title = document.getElementById('cardTitle');
const image = document.getElementById('cardImage');
const description = document.getElementById('cardDescription');
const button = document.getElementById('cardButton');
// قراءة وتعديل خصائص
console.log("العنوان الحالي:", title.textContent);
title.textContent = "عنوان جديد ومثير!";
console.log("العنوان بعد التعديل:", title.textContent);
image.src = "https://via.placeholder.com/150"; // تغيير الصورة
image.alt = "صورة جديدة"; // تغيير النص البديل
description.innerHTML = "هذا <em>وصف</em> <strong>محدث</strong> للبطاقة.";
button.style.backgroundColor = '#28a745'; // لون أخضر للزر
button.style.color = '#fff';
button.textContent = 'شاهد المزيد';
// إضافة كلاس للبطاقة الرئيسية
card.classList.add('active-card');
console.log("الزر الآن:", button.textContent, "ولونه:", button.style.backgroundColor);
وبكذا، صرنا نعرف كيف نوصل لخصائص العناصر ونعدل عليها بكل سهولة. طبقوا الأمثلة عشان تثبت المعلومة!