شما معمولا چجوري المنتهاي يك صفحه رو كنترل ميكنيد ؟
getElementById و getElementsByTagName دو تا تابع خوب هستند براي اين كار اما باز هم دست آدم خيلي بسته هست .
فكر كنيد چند تا فيلد متني داريد كه نياز داريد گروه بندي بشن و مثلا در يك لحظه 10 تا شو disable كنيد !
استفاده از getElementsByTagName باعث ميشه همه فيلدهاي TEXT غير فعال بشن و استفاده از getElementById هم ميتونه خيلي وقت گير باشه .
در صورتي كه فرم شما قابليت اضافه كردن فيلد رو هم داشته باشه و از قبل مشخص نباشه ID فيلد چيه اونوقت ديگه هيچي . البته بازم راه داره اما خيلي سخت ميشه .
خوب به نظر شما چرا تابعي با نام
getElementsByClass وجود نداره ؟
فكرشو كنيد ! كارهاي زيادي ميشه انجام داد .
خوب اشكال نداره چون يكي از دوستان اين تابع رو به صورت دستي ايجاد كرده . البته به صورت متد از كلاس document نبايد استفاده بشه بلكه به صورت يك تابع معولي .
در زير كد اين كلاس رو ميبينيم :
<script language="javascript">
function getElementsByClass( searchClass, domNode, tagName) {
if (domNode == null) domNode = document;
if (tagName == null) tagName = '*';
var el = new Array();
var tags = domNode.getElementsByTagName(tagName);
var tcl = " "+searchClass+" ";
for(i=0,j=0; i<tags.length; i++) {
var test = " " + tags[i].className + " ";
if (test.indexOf(tcl) != -1)
el[j++] = tags[i];
}
return el;
}
</script>نكته : نمونه هاي ديگري هم هستند كه تفاوت زيادي با اين كد ندارند :
http://javascript.internet.com/snippets/getelementsbyclass.html
http://www.dustindiaz.com/getelementsbyclass/
http://domscripting.com/blog/display/18