تعلم DHTML – جافاسكربت DOM

مدرج تحت قسم: دروس
9 سبتمبر 2006

في هذا الدرس سنتعلم بإذن الله تعالى الفرق بين الجافاسكربت وDOM وDHTML، فالكثير الكثير من مبرمجي ومصممي الويب يغفلون عنه ويظنون أن كل هذه الأشياء واحد وهي الجافاسكربت، وكثير منا عندما يريد أن يستخدم الجافاسكربت في تصميمه للصفحة فأنه يذهب ويبحث بالساعات عن برمجيات جاهزه لتغيرات بسيطه كتغير لون الخلفية عندما يضغط المستخدم على زر مثلاً، ومانفعله بالغالب هو Cut & Paste بدون حتى قراءة الكود ومع أن الكود يكون سهل جدا وفي الغالب لايتعدى 20-30 سطر.

الفرق بين الجافاسكربت وDOM وDHTML؟

الجافاسكربت هي لغة برمجية للويب، وهي لغة Object scripting language أي أنها لغة تعتمد على Classes بشكل كبير على العكس من PHP أول ماظهرت لم تكن تعتمد على Classes كانت تعتمد على Functions وبعد ذلك تم إضافة الدعم للClasses في النسخ المتأخرة من php، ولكن أغلب المبرمجين على الجافاسكربت لايستفيدون من هذه الخاصية المهمة وهو ليس موضوع حديثنا اليوم ولكنني أحببت أن أوضح الفرق.

لغة الجافاسكربت هي لغة في نصها أشتقت من لغة C لكي يسهل على المطورين تعلمها بسرعة بدون العناء إلى تعلم نص أو syntax جديدة لهذه اللغة.

إذا ماهي DHTML؟

DHTML عزيزي القارئ هي اختصار لكلمة Dynamic HTML وهي لغة HTML التفاعلية، وكما نعلم فإن HTML هي لغة برمجية static أو ثابيه، فأي شيء تبرمجه ستجده ظاهرا على الصفحة بدون أي حركات أو إضافات animation، واكن بعدما قامت شكرة netscape المشهورة بإضافة لغة الجافاسكربت إلى متصفحها هنا أضافت الحركة إلى الصفحة وجعلتها تتفاعل أكثر مع المستخدم ومن ثم تم تتطبيقها بشكل رسمي من المنظمة العالمية للويب w3c،

الآن وبعدما عرفنا DHTML نذهب إلى تعريف مهم وهو DOM.

ما هو DOM؟

اختصار لكلمة Document Object Model وهي API أو وصلة تطبيق برمجي لملفات HTML وXML التي تتيح هيكلة الملف وتقسيمه، ومن ثم يمكنك أن تحدد أي Object من ذلك الملف والتعديل عليه من ناحية النص أو الشكل أو لون الخلفية … الخ. باختصار شديد هي حلقة الوصل بين DHTML والجافاسكربت.

معنى Objects أي أن كل ما يضيفه مصمم الويب من صور وجدوال ونص وماخلافه يكون Objects، ويمكنك تحديد أي Object في صفحتك والدخول إليه لتغير خصائصه عن طريق DOM.

وDOM تستعمل غالبا مع الجافاسكربت، ولكنها ليست جزء من اللغة نفسها فقد تم تصميم الDOM ليكون إضافاة للغات البرمجة وليس ليستعمل مع لغة الجافاسكربت فقط، وهنا أحب أن أوضح نقطه قد يكون أكثر من 90% من مصممي الويب غافل عنها وهي أن الحركات التفاعلية وتغير الألوان يكون بالجافاسكربت DOM وليس بالجافاسكربت لوحدها. أمثلة لاستخدامات DOM في لغات البرمجة الأخرى: لغة php.

سأوضح كلامي السابق بمثال، لنفترض أنك أنشأت صفحة ويب HTML وكان فيها عنصر div أو img وأردت عندما يقوم الزائر بالضفط على زر في الصفحة أن تتغير لون خلفية هذا العنصر اللذي أضفناه، فوسيلتك الوحيدة للدخول إلى هذا العنصر وتغير خلفيته هو بالجافاسكربت DOM.

كيفية استخدام الجافاسكربت DOM؟

الآن وصلنا إلى أهم نقطة في حديثنا اليوم، كيف نوظف الجافاسكربت DOM وكيف نعطي صفحتنا فاعلية أكثر ونحولها إلى DHTML. انظر إلى المثال التالي وهو مأخوذ من موقع شركة Mozilla، هذا الكود راح يأخذ كل الأوسمة أو Tags التي هي على شكل والتي تمثل أوسمة الوصلات الموجودة في صفحتك ويخزنها على شكل Array أو مصفوفة في المتغير anchorTags، وراح يعطيك مسج أو alert() بكل وصلة يؤدي إليها هذا الوسم باستخدام For Loop.

var anchorTags = document.getElementsByTagName(”a”);
for (var i = 0; i < anchorTags.length ; i++)
{
alert(”Href of ” + i + “-th element is : ” + anchorTags[i].href + “\n”);
}

الآن لنحلل هذا الكود ولنتعرف على ماهو DOM وماهو من أصل الجافاسكربت.

var anchorTags =

لتعريف المتغير في الجافاسكربت.

document.getElementsByTagName("a")

document ومن تعريف W3C له هو الصفحة الكاملة التي تحتوي على كل شيء من صور وخلافه، والدالة getElementsByTagName تبحث عن كل الأوسمة التي في document أو الصفحة وأي وسم يطابق المعطيات لهذه الدالة سوف يتم تخزينه في المتغير أعلاه، وهذا من خصائص وتعاريف DOM.

For-Loop

هي حلقة معروفة لدى المبرمجين وهذه من خصائص الجافاسكربت

anchorTags.length

هي للإثنين تقريبا لأنها تعتبر مصفوفة في نظر الجافاسكربت وفي نظر DOM وحسب تعريف W3C لها هي عدد العقد أو Nodes، على أي حال هي تعبر عن عدد العقد التي رجعت إلينا من منادة الدالة document.getElementsByTagName(”a”).

anchorTags[i].href

لمبرمجين C يمكن أن يلاحظوها، فنحن هنا نأخذ المصفوفة anchorTags رقم i وندخل إلى خاصية href بها ونأخذ مابداخلها. وخاصية href بهذه الطريقة هي من خصائص DOM ويرجع لنا على شكل نص أو String.

المراجع

http://developer.mozilla.org/en/docs/About_the_Document_Object_Model

الخلاصة

في هذا الدرس تعلمنا الفرق بين الجافاسكربت وDOM وDHTM. وعرفنا كيف ندخل إلى أي Object أو عنصر في صفحة HTML وتغيرها حسب الطلب. أتمنى من الله أن أكون قد وفقت في شرح هذا الدرس، وللأخوة الذين لديهم أي استفسارات لاتترددوا في طرحها، وشكرا لكم على وقتكم لقراءة الموضوع.

عن الكاتب

عبدالرحمن العتيبة أحد مؤسسي ورئيس التحرير في موقع المشروع، يهوى برمجة وتطوير الويب بكافة أنواعها، وله خبرة تتعدى 10 سنوات في هذا المجال، يعتبر نفسه من "أشد" مناصري المصادر المفتوحة، وأنها "في يوم ما" ستقضي على كل برنامج محتكر ومغلق مصدره. يعتقد بوجود القمر، ولكنه للأسف لم يصل إليه إلى الآن. يمكنك متابعته على twitter وعلى مدونته.

  • Share/Bookmark

التعليقات (11) على ”تعلم DHTML – جافاسكربت DOM“

  1. lلوضوع مميز جدا أخي ابو عوف واسمح لي ان اظيف بعض الاسطر
    فعلا يخطئ من يجمع بين DOM (نمودج اتحاد المستند العالمي) وبين لغة الجافاسكريبت، قديما قبل الوصول الى معايير الوصول الى المستندات، كان مبرمجو الجافاسكريبت مضطر الى البرمجة على اساس تعدد المتصفحات. فهو يضع برنامج بأكواد خاصة بمتصفح أنترنت اكسبلورر و اكواد اخرى خاصة بمتصفح نيتسكيب ثم سفاري، يعني ان اردت ان تبرمج كود وجب ان تضع ثلاث اكواد حتى يشتغل فيهم كلهم او تضع كود يشتغل فقط في انترنت اكسبلورر وعند تطبيقه في متصفح اخر تخرج سالة مفادها ان هذا السكمريبت يشتغل فقط في المتصفح الفلان الفلاني، وهذه المشكلة اتت لأن نيتسكيب و اوبرا يعتمدون على javascript بينما المتصفح انترنت اكسبلورر يعتمد على Jscript، فطريقة الوصول الى المستندات و التعامل مع الوسوم تختلف من لغة الى لغة ومن متصفح الى اخر، وهنا برزت اهمية اتحاد نمودج المستند العالمي(DOM) حيث جعلت الوصول الى المستندات و الوسوم بنفس الطريقة مهما اختلفت اللغة، نفس الطريقة للوصول الى الوسوسوم سواء كانت اللغة هيكلية ك java او نصية ك javascript او حتى كانت ASP

  2. شكرا لمرورك الكريم أخي زيزوار،

    نعم كلامك صحيح 100%، لهذا فالآن لاينصح باستخدام مثل هذه الاكواد التي تسمى بالBrowser Sniffing أو متحري المتصفحات، واذا أردت أن تبرمج تطبيقا بالجافاسكربت فبرمجه باعتمادك على الw3c DOM وتعاريفها الأساسية بالشكل الأكبر وفي الحالات القصوى فيكون استخدام متحري المتصفحات على هذا الشكل

    الانترنت اكسبلورر يستخدم خاصية: document.all
    بينما تجد النيتسكيب يستخدم خاصية: document.layers

    لتعريف المستندات، وبهذا يمكنك من معرفة أي متصفح يستخدمه المستخدم…وهذا نفس ماقلتلك سابقا في الحالات القصوى فقط.

    وللإطلاع أكثر على هذه المشكلة: http://www.quirksmode.org/blog/archives/2006/08/the_dangers_of.html

  3. khopery

    السلام عليكم،
    جزاكم الله خيرا على هذ المجهود الرائع.

    إخواني أحتاج لمساعدة عاجلة، اريد تعلم ال php و ال Ajax و لا أعلم المعهد المناسب أو المكان المناسب الذي أتوجه إليه ، علما بأني أعيش بالإمارات، أرجو توجيهي للمكان المناسب، لكم جزيل الشكر مقدما.

  4. أحمد أسامة مصلح (وريث الأنبياء)

    بسم الله الرحمن الرحيم
    السلام عليكم ورحمة الله وبركاته

    جزاااااااااااااكم الله خيراً

    (( ^__^ ))

    هو أنا عمبتعلم 3 لغات برمجة وأنا مش عارف :)
    هههههههههههههههههههه

    والسلااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااام ختاااااااام

  5. omarino14

    شكرا لك اخي
    ونريد منك اخي من فضلك نوفير دروس عن dom بالعربية
    وجزاك الله خيرا

  6. مشكور أخي على الدرس

  7. اخى عبدالرحمن العتيبة تكرم على هذا الموضوع الذى اعتقد الوحيد من نوعه الذى يشرح ال dom ولكن الموضوع اكبر من ان يحتوية مقال ولكن لعلها خطوه اتمنى ان يعقبها سلسلة مقالات يشرح هذا الموضوع

    اتمنى لو توضح المثال بكتابة الكود لهذا المثال
    “سأوضح كلامي السابق بمثال، لنفترض أنك أنشأت صفحة ويب HTML وكان فيها عنصر div أو img وأردت عندما يقوم الزائر بالضفط على زر في الصفحة أن تتغير لون خلفية هذا العنصر اللذي أضفناه، فوسيلتك الوحيدة للدخول إلى هذا العنصر وتغير خلفيته هو بالجافاسكربت DOM. ”

    مع اضافة بعض الامثلة البسيطة الاخرى

    بعض الكتب المهمة للتعلم كلا من dom والجافاسكربت “Simply JavaScript”من موقع sitepoint
    http://www.sitepoint.com/books/javascript1/

    وشكرا

  8. Blue

    جزاك الله ألف خير

    قليل مانرى مثل هذه المراجع باللغة العربية .. أفادني موضوعك كثيراً

  9. dia

    انا جابب اتعلم ال ajax

  10. صراحة موضوع مهم جداااااا يجب الاهتمام بة
    واى خدمة انا موجود واى استفسار فىhtml,css,javascript,asp.net,dom,php
    وشكرااا وارجوا الاهتمام بالموضوع

    م/محمد الجواد
    كلية الجاسبات والمعلومات

أضف تعليقك




يمكنك استخدام الوسوم التالية في التعليق: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


* حقول مطلوبة