javascript - شرح - document.all vs. document.getElementById




onclick javascript (5)

متى ينبغي لك استخدام document.all مقابل document.getElementById ؟


على وجه التحديد ، تم تقديم document.all لـ IE4 قبل أن يتم تقديم document.getElementById .

لذا ، فإن وجود document.all يعني أن الكود يهدف إلى دعم IE4 ، أو يحاول تعريف المتصفح على أنه IE4 (على الرغم من أنه كان من الممكن أن يكون Opera) ، أو الشخص الذي كتب (أو تم نسخه ولصقه) لم يكن الرمز على أحدث.

في الحدث المستبعد للغاية الذي تحتاجه لدعم IE4 ، فإنك تحتاج إلى document.all (أو مكتبة تعالج مواصفات IE القديمة).


في الواقع ، فإن document.all لا يمكن مقارنته إلا بـ document.getElementById . لن تستخدم أحدهما بدلاً من الآخر ، ولا يعيدان نفس الأشياء.

إذا كنت تحاول تصفية إمكانيات المتصفح ، فيمكنك استخدامها كما في share كما يلي:

if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {    //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}


ولكن ، من الناحية الوظيفية ، يكون document.getElementsByTagName('*') أكثر مكافئة لـ document.all .

على سبيل المثال ، إذا كنت ستستخدم document.all لفحص جميع العناصر على الصفحة ، مثل هذا:

var j = document.all.length;
for(var i = 0; i < j; i++){
   alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}

يمكنك استخدام document.getElementsByTagName('*') بدلاً من ذلك:

var k = document.getElementsByTagName("*");
var j = k.length; 
for (var i = 0; i < j; i++){
    alert("Page element["+i+"] has tagName:"+k[i].tagName); 
}

document.all قديمة جدا ، لم يكن لديك لاستخدامها بعد الآن .

على حد تعبير نيكولاس زكاس :

على سبيل المثال ، عندما كان DOM صغيرا ، لم تكن جميع المتصفحات مدعومة getElementById () ، وبالتالي كان هناك الكثير من التعليمات البرمجية التي تبدو كالتالي:

if(document.getElementById){  //DOM
    element = document.getElementById(id);
} else if (document.all) {  //IE
    element = document.all[id];
} else if (document.layers){  //Netscape < 6
    element = document.layers[id];
}

document.all هو امتداد مايكروسوفت الملكية لمعيار W3C.

getElementById() هو المعيار - استخدام ذلك.

ومع ذلك ، ضع في اعتبارك ما إذا كان استخدام مكتبة js مثل jQuery سيكون مفيدًا. على سبيل المثال ، $("#id") هي مكافئ jQuery لـ getElementById() . بالإضافة إلى ذلك ، يمكنك استخدام أكثر من مجرد محددات CSS3 .


تعتبر document.all () طريقة غير قياسية للوصول إلى عناصر DOM. لقد تم إيقافه من بعض المتصفحات. يمنحك الوصول إلى كافة العناصر الفرعية في المستند.

document.getElementById () هو معيار ومدعوم بالكامل. يحتوي كل عنصر على معرف فريد في المستند.

اذا كنت تمتلك:

<div id="testing"></div>

عن طريق

document.getElementById("testing"); 

سوف يكون الوصول إلى هذا div محددة.







getelementbyid