JavaScript'e Giriş
Bölüm 5


Önemli bir programlama tekniği dizilerin kullanımıdır ve birçok programlama dilinde bu standart olarak bulunur. Şu anda dizi kullanacak seviyeye gelmiş durumdasınız. Ancak Netscape'in dökümanlarına bakarsanız dizilerle ilgili hiçbir şey söylenmediğini göreceksiniz. Asıl problem JavaScript'te dizilerin bulunmaması! Ama ben size bununla ilgili bir iyilik düşüneceğim!

Öncelikle dizi nedir? Dizilerin birbirine bağlı bir sürü değişken olduğunu söyleyebiliriz. Örneğin 10 tane değişken istiyorsunuz. a, b, c ... diye isim vermeye başlayabilirsiniz. Biraz karışık olur değil mi? Peki ya 100 ya da daha fazla değişkene ihtiyacınız olursa? Eğer 'BenimDizi' diye bir diziniz olursa değişik elemanları BenimDizi[1], BenimDizi[2], BenimDizi[3] diye adlandırabilirsiniz. (Birçok programlama dilinde '0' ile başlanır fakat biz '1' veriyoruz. Daha sonra JavaScript'te bu şekilde kullanacağız) Yani ilk değişkene '17' değerini verecekseniz BenimDizi[1]=17 demeniz yeterli olacaktır. Gördüğünüz gibi dizilerle normal değişkenlerle çalıştığınız gibi çalışabilirsiniz ancak dizilerin bazı özellikleri de vardır. Örneğin '11' tane değişkeniniz var ve hepsine de '17' değerini atamak istiyorsunuz:

for (var i=1;i < 11;i++) {
BenimDizi[i]=17
}

yazabilirsiniz. 'for' döngüsü C ve benzeri programlama dillerinde olduğu gibi bilgisayara komutun ne sıklıkla yapılacağını anlatır. Yukarıdaki örnekte 'for' döngüsü i=1 ile başlıyor. Önce bilgisayar BenimDizi[1] değişkenine 17 değerini atıyor. Daha sonra 'i' 1 artıyor ve BenimDizi[2] değişkenine de 17 değeri atanıyor ve 'i' 10 değerine ulaşana kadar bu böyle sürüyor. (Yani komutu okursak i=1 'den 11'den küçük oluncaya kadar i'yi arttır. 'i' her değer aldığında for- komutundan sonraki işlem yapılır.)
Şimdi size diziler ile ilgili bir fonksiyon verelim:


function initArray() {
      this.length = initArray.arguments.length
      for (var i = 0; i < this.length; i++)
      this[i+1] = initArray.arguments[i]
   }

Bu fonksiyonu anlamanıza gerek yok, bilmeniz gereken şey bu fonksiyonun kullanımıdır. Eğer üç elemanlı bir dizi yaratacaksanız:

var MyArray= new initArray(17,18,19)

yazmanız yeterli. 17,18,19 değerleri 1,2,3 elemanlarına atanır. Dizilerinize kelime katarları da yazabilirsiniz. İki tip arasında hiçbir fark yoktur...

var heyho= new initArray("Güzel","birşey","bu!")

Ya da değişik tipkeri karışık kullanabilirsiniz:

var Karisik= new initArray(17,"hey",103).

Çıktısını mı görmek istiyorsunuz?

Eleman No. 1: 17
Eleman No. 2: hey
Eleman No. 3: 103

Ve de kaynağı:

<script language="JavaScript">
<!-- Hide
  var Mixedup= new initArray(17,"hey",103);
  document.write("Element No. 1: "+Mixedup[1]+"<br>");
  document.write("Element No. 2: "+Mixedup[2]+"<br>");
  document.write("Element No. 3: "+Mixedup[3]+"<br>");
// -->  
</script>

Tabii önce yukarıda belirttiğim initArray fonksiyonunu tanımlamayı unutmayın yoksa programınız initArray'in ne olduğunu haliyle anlayamayacaktır.


Dökümanı Temizlemek

Dün küçük bir oyun yazdım ve ileride sizin de karşılaşabileceğiniz bir problemle karşılaştım. Netscape'deki dökümanlara göre, eğer bir frame'i ya da pencereyi temizlemek isterseniz 'document.clear()' diye hazır bir fonksiyon var. Ancak bu fonksiyonun çalışmadığını gördüm. Gordon McComb aşağıdaki script'i önerdi ve ben de istediğimi elde ettim:

 document.close();
 document.open();
 document.write("<P>"); 

İleri-Geri Tuşları

Sayfanızdaki değişik dökümanlar arasında sörf yapılmasında kolaylık sağlayacak bir script'e göz atalım. Aslında bahsetmek istediğim alıcınızdaki 'back' ve 'forward' tuşlarının görevini yapan bir script. Örneğin sayfamda normal linkolarak hazırladığım 'Geri Dönüş' işlemini görmesi için koyduğum linkler vardı. Ancak bazen aynı dosyaya birden fazla sayfadan gidilebiliyor. Eh, bu durumda da gelinen sayfanın hagi sayfa olduğunu bulmak biraz zor. Ancak bu link'i takip ederseniz bu sorunun çözümü ile karşılaşacaksınız: alıcınızın üstündeki 'Back' 'Forward' tuşlarının işlevinin normal form gönderme tuşları ile yapıldığını göreceksiniz. Nasıl mı yaptım? İşte kaynağı:

<html>
<body>
<FORM NAME="buttonbar">
     <INPUT TYPE="button" VALUE="Geri" onClick="history.back()">
     <INPUT TYPE="button" VALUE="JS'ye Giriş" onClick="location='script.html'">
     <INPUT TYPE="button" VALUE="İleri" onCLick="history.forward()">
</FORM>
</body>
</html>
Ya da history.back() için history.go(-1) ve history.forward() için history.go(1) de yazabilirsiniz.


İndeks - Bölüm 1 - Bölüm 2 - Bölüm 3 - Bölüm 4 - Bölüm 6 - Bölüm 7


11.Mayıs'96
© 1996 Stefan Koch