22 Şubat 2007 Perşembe

Bütün Form elementlerini değer olarak tanıtma, extract()

Merhaba,
Geçenlerde bir kod yazdım ve sizinle paylaşmak istedim. Bu kod body->onload event'inde çalıştırldığında bir form element'ini adeta

var textbox = document.getElementById("textbox");
şeklinde tanıtmışsınız gibi bütün elementleri yakalayıp id'lerine göre tanıtıyor.
Bu function'ın çok benzeri PHP'de de var yine extract ismiyle.
Neyse işte kod.

function extract(){
var ie = (document.all)? "var " : "";
var allelems = document.body;
for(var x=0;x < allelems.childNodes.length;x++){
if(allelems.childNodes[x].id){
eval(ie + allelems.childNodes[x].id + " = document.getElementById('"+ allelems.childNodes[x].id +"');");
}
}
}



Bu fonksiyonun bazı problemleri var mesela body->onload'da luzümsüz şeyleri çalıştırmak programınızı yavaşlatabilir.
bunun yanında eğer form'unuzdaki elementlere id'olarak allocated isimler verdiyseniz. yani "window", "document", "if", "for", "while" gibi bu isimlerle değer tanıtmaya çalışacağından sorun yaratabilir.

Aslında bu probleminde bir çözümü var, değerleri şu şekilde:
var textbox = document.getElementById("textbox");
tanıtmak yerine, bu şekilde tanıtın.

var elems = new Array;
elems["textbox"] = document.getElementById("textbox");
elems["textbox2"] = document.getElementById("textbox2");

Bu sorunu çözecektir. size formdaki bütün elementleri içeren bir associative array vericek.

Çokta kullanışlı bir function olmadığını biliyorum. ancak bazı özel durumlarda mesela dosya boyutunu düşürmede kullanılabilir. neyse umarım işinize yarar,
iyi çalışmalar.