أولاً ، دعونا نلقي نظرة على مثال:
نسخة الكود كما يلي:
<form name = "buyerform" method = "post" Action = "/MySport/Control/user/list.do">
<type type = "checkbox" id = "usernames" value = "testTest"> testTest <br>
<type type = "checkbox" name = "usernames" value = "testTest"> testTest <br>
<type type = "text" id = "usernames" value = "testTest"> testTest <br>
</form>
document.forms [0] عندما يكون هناك نموذج نموذج أو نماذج نموذج متعددة في صفحة HTML ، فإنه يعيد صفيف نموذج من نوع nodelist.
document.forms [0]. usernames ، هنا يمكن أن تكون أسماء المستخدمين هي قيمة المعرف أو الاسم ، حيث تكون هاتان السنتان متكافئين. علاوة على ذلك ، لا يميز ما إذا كان المكون عبارة عن مربع نص أو مربع راديو أو خانة اختيار.
في هذا الوقت ، نحتاج إلى التمييز بين حالتين .
عندما يكون معرف الإدخال أو الاسم "أسماء المستخدمين" ، فإن document.forms [0]. Usernames تُرجع مكون إدخال محدد. إذا تم تشغيله ، فيجب استخدامه وفقًا لطريقة تشغيل المكون المحددة.
في هذا الوقت ، إرجاع ALERT (document.forms [0]. usernames.length) غير محدد لأن مكون الإدخال لا يحتوي على خاصية الطول.
عندما يكون هناك اثنين أو أكثر من معرفات الإدخال أو اسم "أسماء المستخدمين" ، فإن document.forms [0]. في هذا الوقت ،
تنبيه (document.forms [0]. usernames.length) سيعود طول الصفيف. في المثال أعلاه ، قيمة الإرجاع هي 3.
لذلك ، عند استخدام JS لتحديد الكل ، فكر في الموقف الذي يوجد فيه خانات اختيار واحدة ومتعددة من نفس الاسم.
نسخة الكود كما يلي:
وظيفة allselect () {
var form = document.forms [0] ؛
var state = form.allselectbox.checked ؛
var length = form.usernames.length ؛ // عندما يكون هناك اثنين أو أكثر من أسماء مربعات الاختيار التي هي أسماء مستخدم
// عندما يكون هناك اسم مربع اختيار هو أسماء مستخدمين ، فإن form.Usernames تُرجع كائن مربع الاختيار ، وليس صفيفًا ، وبالتالي فإن خاصية الطول غير محددة
إذا كان (طول) {// في JavaScript ، طالما أن الحالة المحكوم بها هي 0 أو لاغية أو غير محددة ، فإنها تعتبر خاطئة ، ويعتبر حالات أخرى صحيحة
لـ (var i = 0 ؛ i <length ؛ i ++) {
form.userNames [i] .chected = state ؛
}
}
آخر{
form.userNames.checked = State ؛
}
}
يوجد معرف مكون من "أسماء المستخدمين" أو معرفات مكون متعددة هي "أسماء مستخدمة" ، و document.getElementById ('usernames') لإرجاع القيمة التي يتم إرجاعها بواسطة مكون النموذج. عندما تكون معرفات مكون متعددة هي "أسماء مستخدمين" ، فإن معرف المكون الأول هو "أسماء مستخدمين".
يوجد اسم مكون "أسماء مستخدمين" أو أسماء مكونات متعددة "أسماء المستخدمين" ، document.getElementsByName () إرجاع مجموعة HTMLCollection. لاحظ الفرق من المستند.
var names = document.getElementsByTagName ("أسماء المستخدمين") ، تنبيه (أسماء [0]) النتيجة التي تم إرجاعها هنا غير محددة. اعتدت على خلط اسم BYNAME مع BYTAGNAME ، ولا تبدأ علامة بأسماء المستخدمين. <usernames value = ''> </usernames> هذا غير موجود.
ومع ذلك ، فإن عودة getElementsByTagname لا تزال مجموعة صفيف ، والتي لا تحتوي على أي محتوى ، أسماء [0] غير موجودة ، لذلك لا يتم تعريف العائد ، لأنه عندما يتم تجاوز نطاق الصفيف ، تنبثق القيمة غير المحددة.
var test = {'0' ، '1' ، '2' ،} ؛ Alert (test [3]) ؛ يعود غير محدد.