سؤال

قد يبدو هذا السؤال سخيفًا ، ولكن ما هو الفرق بين الوصول إلى عنصر (مع معرف "soyid") باستخدام المستند. مجرد كتابة شخص ما؟

على سبيل المثال:

document.getElementById("someId").style.top = "12px";

ضد

someId.style.top = "12px";

إليك رمز عينة http://jsfiddle.net/prata/ (لقد وجدت أنه لا يعمل في Firefox)

هل كانت مفيدة؟

المحلول

الفرق هو أنه في حين someId يعمل في بعض المتصفحات ، document.getElementById("someId") يتوافق في الواقع مع معيار W3C.

نصائح أخرى

إن إعلان عنصر DOM لا يعني أنه متاح كمتغير عالمي في جميع المتصفحات. الطريقة الوحيدة المتوافقة المتوافقة للحصول على ذلك هي القيام أولاً.

var someId = document.getElementById("someId");

يحرر: لقد قمت بإجراء رمز الاختبار هذا الذي يتحقق من أن المتصفحات المستندة إلى WebKit يبدو أنها تتيح المعرف باعتباره VAR دون إعلانه أولاً. وفق هذه, ، أيضا أي سوف تظهر هذا السلوك.

  • Firefox: كائن/غير محدد
  • سفاري: كائن/كائن
  • الكروم: كائن/كائن
  • IE: كائن/كائن (لم يتم التحقق منه)

شفرة:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>

في البرمجة النصية من جانب العميل ، نقوم بالتوثيق. لاسترداد العنصر المعين من DOM وخصائصه وطرقه ، تحتاج إلى استخدام طريقة getElementByID. في jQuery يمكنك ببساطة القيام var objx = $ ('#id')

حيث كطالب معرف مستقيم لن يقوم بهذه المهمة. لأنه كيف ستستخرج العنصر OBJ من DOM دون عبور المستند. المستند. سوف تسحب طريقة getElementById معلومات العنصر من المستند. آمل أن يكون هذا منطقيًا.

باستخدام فقط someId هي طريقة قديمة لاختيار عنصر (أعتقد أن هذا تم تنفيذه بواسطة IE). document.getElementById هو المعيار الذي يعمل على جميع المتصفحات.

النظر في السيناريو الذي تدعمه فقط متصفحات IE القديمة. document.getElementById لا يزال أكثر موثوقية وقابلة للقراءة. موثوقة إذا كنت تستخدم جميع الأرقام للمعرفات.

فمثلا:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't

إن الوصول إلى العناصر كخصائص للكائن العالمي المسمى على بعد معرف العنصر (مثالك الثاني) هو الراحة التي نشأت في IE وتم نسخها بواسطة Safari و Chrome. إنها فكرة سيئة حقًا ويجب ألا تستخدمها. القضية الرئيسية هي تسمية التصادم (على سبيل المثال ، عناصر ذات معرفات صالحة تمامًا مثل "التنبيه" أو "المستند").

document.getElementById(), ، من ناحية أخرى ، هو معيار دوم منذ فترة طويلة ، وبصرف النظر عن بعض العيوب الغبية, ، هو مضمون. استخدمه دائمًا في التفضيل إلى النموذج الآخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top