في تطوير تطبيقات الويب ، وخاصة برامج Web2.0 ، من الضروري في كثير من الأحيان الحصول على عنصر في الصفحة ثم تحديث النمط والمحتوى وما إلى ذلك. كيفية تحديث العناصر هي المشكلة الأولى التي يتم حلها. إنه لمن دواعي سروري وجود العديد من الطرق للحصول على العقد باستخدام JavaScript. فيما يلي ملخص موجز (تم اختبار الطرق التالية في IE7 و Firefox 2.0.0.11):
1. الحصول على عقدة المستند العليا:
(1) document.getElementById (ElementId): يمكن لهذه الطريقة الحصول بدقة على العناصر المطلوبة من خلال معرف العقدة ، وهي طريقة بسيطة وسريعة نسبيًا. إذا كانت الصفحة تحتوي على عقد متعددة ذات نفس المعرف ، فسيتم إرجاع العقدة الأولى فقط.
في الوقت الحاضر ، ظهرت مكتبات JavaScript المتعددة مثل النموذج الأولي والموتوز ، والتي توفر طريقة أبسط: $ (id) ، ولا تزال المعلمة هي معرف العقدة. يمكن اعتبار هذه الطريقة بمثابة
طريقة أخرى لكتابة المستند. getElementById () ، ولكن وظيفة $ () أكثر قوة. للاستخدام المحدد ، يرجى الرجوع إلى وثائق API الخاصة بها.
(2) document.getElementsByName (elementName): هذه الطريقة تحصل على العقدة من خلال اسم العقدة. من الاسم ، يمكن ملاحظة أن هذه الطريقة لا تُرجع عنصر عقدة ، بل مجموعة من العقد بنفس الاسم. بعد ذلك ، يمكننا أن نحلق من خلال سمة العقدة للحصول على حلقة لتحديد ما إذا كانت العقدة المطلوبة.
على سبيل المثال: في HTML ، يستخدم مربع الاختيار والراديو كلاهما نفس قيمة سمة الاسم لتحديد العناصر في المجموعة. إذا كنا نريد الحصول على العنصر المحدد الآن ، فإننا نحصل أولاً على العنصر المتلألئ ، ثم حلقة لتحديد ما إذا كانت قيمة السمة التي تم فحصها للعقدة صحيحة.
(3) document.getElementsByTagName (tagname): تحصل هذه الطريقة على العقدة من خلال علامة العقدة ، وتُرجع الطريقة أيضًا صفيفًا ، على سبيل المثال:
document.getElementsByTagName ('A') ستعيد جميع العقد التشعبية على الصفحة. قبل الحصول على عقدة ، عادةً ما تعرف نوع العقدة ، لذا فإن استخدام هذه الطريقة أمر بسيط نسبيًا. لكن العيب واضح أيضًا ، أي أن الصفيف الذي تم إرجاعه قد يكون كبيرًا جدًا ، والذي سيضيع الكثير من الوقت. إذن ، هل هذه الطريقة عديمة الفائدة؟ بالطبع لا. هذه الطريقة تختلف عن اثنين أعلاه. إنها ليست طريقة ملكية لعقد المستندات. يمكن أيضًا تطبيق العقد الأخرى ، كما هو مذكور أدناه.
2. احصل على العقدة الأصل:
(1) parentobj.firstchild: يمكن استخدام هذه الطريقة إذا كانت العقدة هي الطفل الأول لعقدة معروفة (ParentObj). يمكن استخدام هذه الخاصية بشكل متكرر ، مما يعني أنه مدعوم
parentobj.firstchild.firstchild.firstchild ... ، حتى تتمكن من الحصول على عقد أعمق.
(2) ParentObj.Lastchild: من الواضح أن هذه الخاصية هي آخر عقدة الطفل للعقدة المعروفة (ParentObj). مثل Firstchild ، يمكن استخدامه بشكل متكرر.
قيد الاستخدام ، إذا نجمع بين الاثنين ، فسوف نحقق تأثيرًا أكثر إثارة ، وهو: ParentObj.firstchild.lastchild.lastchild ...
(3) ParentObj.ChildNodes: احصل على مجموعة العقدة الفرعية للعقد المعروفة ، وبعد ذلك يمكنك العثور على العقد المطلوبة من خلال الحلقات أو الفهارس.
ملاحظة: بعد الاختبار ، تبين أن مجموعة العقد الفردية المباشرة يتم الحصول عليها على IE7 ، بينما يتم الحصول على مجموعة من العقد الفرعية على Firefox2.0.0.11 هي جميع العقد الفرعية ، أي العقد الفرعية بما في ذلك العقد الفرعية.
(4) ParentObj.Children: احصل على مجموعة عقدة الطفل المباشرة للعقد المعروفة.
ملاحظة: بعد الاختبار ، على IE7 ، يكون التأثير هو نفسه الأطفال ، لكن Firefox 2.0.0.11 لا يدعمه. هذا هو السبب أيضًا في أنني أريد استخدام أنماط مختلفة من طرق أخرى. لذلك ، لا ينصح بالاستخدام.
(5) ParentObj.getElementsByTagname (TagName): لن يتم تكرار طريقة الاستخدام ، فهي تُرجع مجموعة من العقد الفرعية للعقدة المعروفة ذات قيمة محددة بين جميع العقد الفرعية للعقدة المعروفة. على سبيل المثال:
ParentObj.getElementsByTagname ('A') يعيد جميع الارتباطات التشعبية في العقد الفرعية المعروفة.
3. الحصول على من خلال العقد المجاورة:
(1) neighbornode.previoussibling: احصل على العقدة السابقة للعقدة المعروفة (Neighbournode). يبدو أن هذه الخاصية تستخدم بشكل متكرر ، تمامًا مثل Firstchild و LastChild في المباريات السابقة.
(2) Neighbornode.nextsibling: احصل على العقدة التالية للعقدة المعروفة (Neighbournode) ، والتي تدعم أيضًا العودية.
4. الحصول على من خلال العقد الفرعية:
(1) childnode.parentNode: احصل على العقدة الأصل للعقدة المعروفة.
الأساليب المذكورة أعلاه هي مجرد بعض الطرق الأساسية. إذا كنت تستخدم مكتبات JavaScript مثل النموذج الأولي ، فقد تحصل أيضًا على طرق مختلفة أخرى ، مثل اكتساب الفصل من خلال العقد ، وما إلى ذلك ، ومع ذلك ، إذا كان من الممكن استخدام الطرق المذكورة أعلاه بمرونة ، فأعتقد أن معظم الإجراءات يجب أن تكون قادرة على التعامل معها.