JavaScript'e Giriş
Bölüm 5




Önemli bir programlama tekniği de dizilerin kullanımıdır. Birçok programlama dilinde bu standarttır. Şu anda dizi kullanacak seviyeye gelmiş olabilirsiniz. Ancak Netscape'in dökümanlarına baktığınızda dizilerle ilgili hiçbir şey söylenmediğini göreceksiniz. Asıl problem JavaScript'te dizilerin bulunmaması! Ama ben size bir iyilik düşüneceğim!
Öncelikle dizler 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 hapsine de '17' değerini atamak istiyorsunuz:
for (var i=1;i < 11;i++) BenimDizi[i]=17
yazabilirsiniz. 'for-' komutu bilgisayara komutun ne sıklıkla yapılacağını anlatır. 'for-' döngüsü i=1 ile başlıyor. Önce bilgisayar BenimDizi[1] değişkenine 17 depğ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 vermek istiyorum:

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 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!"). Değişik tipkeri de karışık kullanabilirsiniz:var Karisik= new initArray(17,"hey",103).

Çıktı 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,"yo",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>


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>");

Mutlaka document.write("<P>"); yazmanız gerekmiyor. Herhengi birşey yazmanız yeterli.


Şimdi değişik dökümanlar arasında sörf yapmanıza yarayacak 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 link gibi yazılmış ve 'Geri Dönüş' işlemini görmesi için koyduğum bazı linkler vardı. Ancak başka bir yerden bağlanan birisi için bu link hiç de geri göndermiyordu. Ancak bu link'i takip ederseniz 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.go(-1) ve 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