JavaScript ile client tarafında bir takım ayarları kontrol etmek güzeldir hepimiz biliriz. Mesela karışık bir panel yazdınız ve sizin açınızdan bunu kontrol etmek kolay.

Çünkü hangi inputlara hangi veriler gelecek, hangi selectbox larda ne seçilecek, hepsini bilirsiniz. Peki müşterinize bunu nasıl anlatacaksınız ? Müşteri her zaman en basiti tercih ederiz. Çünkü onun işi web sitesi veya web programlama değildir. “Tıklarım çalışır” mantığı vardır. İşte burada karşımıza JavaScript´in gücü geliyor. En son hazırladığım bir yazılımda inputları kontrol etmek zorundaydım. Belirli şartlar eşleştiğinde sistem buna göre bazı alt sayfalar yaratıyor ve gerekli durumda da bu alt sayfaları sistemde gösterip gizleyebiliyordur. Tam o sırada kontrollörlerimden bir hata iletisi aldım. Daha önce duymadığım bir hata.. Hata sadece FireFox da gözüküyordur ve Javascript selectedIndex NS_ERROR_FAILURE başlığına sahipti. Daha önce javascript ile bu tip hata görmedim diyenler olabilir aranızda. Fakat unutmayın ki iyi bir yazılımcının takım çantasında olmazla olmazlardan bir tanesi firebug veya benzeri hata konsollarıdır. Bu konsollar ister inanın ister inanmayın çok faydalı olabiliyor. Tarayıcıların bu tip kodlarda işlem yapmaması üstüne üstlük birde hata vermemesi sizi çileden çıkartabilir… Neyse konumuza devam edelim;
Tam Hata Kodu Şöyle:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHTMLSelectElement.selectedIndex]” nsresult: “0×80004005 (NS_ERROR_FAILURE)” location: “JS frame :: http://www.example.com/test.html :: testSelect :: line 8″ data: no]
Yapmak istediğim şey oldukça basitti aslında. Bir seri checkbox işaretlendikten sonra yada işaretleri kaldırıldıktan sonra sonucu, pop-up açtırdığım ana pencereye taşımak ve eğer hiç işaretli kutu yoksa bir adet selectbox içinde ki veriyi Pasif değerini seçili hale getirmek eğer checkbox işaretliyse selectbox´ı Aktif değeri seçili hale getirmekti. Yani müşterime çok kolay bir kontrol sağlamalıyım. Sonuçta müşteri iş odaklı bakacak. Bizim gibi yazılımcı gözüyle çözümleme yapamaz. Ne kadar az tık, o kadar rahatlık.
İlk önce aşağıda ki kodu yazdım. Internet Explorer ile sorun yaşamadım fakat FireFox da yukarıda ki hata kodunu aldım.
if(getstr == ” || getstr == ‘Yok’ || getstr == ‘ ‘ ){
window.opener.document.IslemSayfasi.ALTSAYFA.value = “Yok”;
window.opener.document.IslemSayfasi.ALTSAYFAMENU.selectedIndex = 1;
window.close();
} else {
window.opener.document.IslemSayfasi.ALTSAYFA.value = getstr;
window.opener.document.IslemSayfasi.ALTSAYFAMENU.selectedIndex =2;
window.close();
}
Bu kod ile pop-up pencereme bir üst fonksiyon ile aldığım checkbox verilerini getiriyorum, pop-up elementlerimi okutuyorum ve sonucuna göre işlem yaptırıyorum. Fakat burda ki hatam şu oldu benim, öncelikle selectbox verileri zero-based yani sıfır tabanlı çalışıyor. Yani ilk option sıra numarası 0 sonra ki 1,2,3,4… diye gidiyor. Bu hatamızı düzelterek 0 ve 1 i seçimlerime ekledim fakat aynı hatayı almaya devam ediyordum.
Sonra kendi kendime dedim ki neden bu value yi değişkene atamıyorum iki farklı değişken açtım sonra tasarruf yapmak için var olan değerden eksitlmeyi denedim ve aşağıda ki kodu oluşturdum;
var length = 2;
if(getstr == ” || getstr == ‘Yok’ || getstr == ‘ ‘ ){
window.opener.document.IslemSayfasi.ALTSAYFA.value = “Yok”;
window.opener.document.IslemSayfasi.ALTSAYFAMENU.selectedIndex = length-2;
window.close();
} else {
window.opener.document.IslemSayfasi.ALTSAYFA.value = ”;
window.opener.document.IslemSayfasi.ALTSAYFA.value = getstr;
window.opener.document.IslemSayfasi.ALTSAYFAMENU.selectedIndex = length-1;
window.close();
}
Ve evet düşündüğüm gibi olumluydu. Firefox da Internet Explorer´da artık sorunsuz bir şekilde çalıştırıyor ve istediğim verileri istediğim yere aktarıyordu. FireFox yapısı gereği bir çok tarayıcıdan daha üstün fakat mimarisinin temellerinde ki kontroller o kadar inatçı ki hiç bir geleneksel opsiyona itimat etmiyor =)
Umarım bu tarzda bir selectbox içinde ki veriyi değiştirmek isteyen arkadaşlara yardımcı olacak makale yazabilmişimdir. Derdimiz basitti; javascript ile selectbox verisini değiştirmek, seçebilmek.
İyi Çalışmalar..
[Eski Blog Yazım]
