JavaScript Nedir?
Yazım Kuralları
Değişkenler
İşlemler
Akış Denetimi
Döngü Denetimi
Diziler
Fonksiyonlar
Pencere Komutları
Metin Komutları
Zaman Komutları
Matematik Komutları
Tarayıcı Komutları
Olay
Nesneler
Javascript ve DHTML
Örnek Uygulamalar

DÖNGÜ DENETİMİ

Javascriptin, bir işi belirli (veya kendi belirleyeceği) kez tekrar yapmasını isteyebilirsiniz. Bu tür tekrarlanan işleri Javascript’e bir kaç satırlık bir kodla yaptırtmak çoğu kez bizi sayfalar dolusu kod yazmaktan kurtarır.

"FOR" Döngüsü


Bir işlemi belirli sayıda tekrarlamak için, başlangıç ve bitiş değerleri verilen bir değişken ile döngü oluşturmak için kullanılır.Genelde sayaç uygulamaları için kullanılır. Genel Yapısı;


for ( ilk değer ; son değer ; artış miktarı ) {

yapılacak işlemler

}

----------------------------------------------

for ( i=
0 ; i<=10 ; i++) {

}


Burada "i" bir değişkendir.Parantez içerisinde ilk değeri i=0 ve son değeri 10 olarak belirlenmiş. i++ ise bu değişkenin değerini her defasında 1 arttıracaktır (10 olana kadar) . { i++ yerine ++i de yazılabilir.} Aralara noktalı virgül konulmalıdır. i<=10 ifadesi "i" değişkeninin 10 değerinide alması içindir. Süslü parantez arasına yazılan işlemler, "i" değişkeninin her değeri için tekrar yapılacaktır.


<pre>
<script language="javascript">
<!--

for ( i=
0 ; i<=10 ; i++) {

document.writeln(i)

}

-->
</script>
</pre>


Burada "i" nin her değeri tek tek ekrana yazılacaktır. i önce 0 olacak ve ekranda 0 yazacaktır. (writeln olduğu için alt satıra geçer).Daha sonra i'nin değeri 1 aratarak 1 olacak bu kez ekranda, 0'ın altında 1 yazacaktır. Bu durum i değişkeni 10 olana kadar devam edecek ve aşağıdaki görüntü elde edilecektir.(i<=10)


0
1
2
3
4
5
6
7
8
9
10



Burada i<=10 yerine i<10 yazılsaydı, i hiç bir zaman 10 olmayacaktı. i, 9 olduğunda writeln işlemi son kez yapılacak ve döngü bitecekti. Yani döngü i 10 dan küçük olduğu sürece çalışacaktı.


0
1
2
3
4
5
6
7
8
9


NOT : ilk değer büyük, son değer küçükte olabilir.Ancak bu kez artım miktarı eksi olmalıdır.


<pre>
<script language="javascript">
<!--

for ( i=
10 ; i>=0 ; i--) {

document.write(i)

}

-->
</script>
</pre>


Burada i önce 10 olacak ve döngü, i değişkeni 0'dan büyük veya 0 olduğu sürece ( i>=0) devam edecektir. Artım miktarı i-- ise i değişkeninin her defasında1 azalacağı anlamına gelir. Ekran çıktısı aşağıdaki gibi olur. (write olduğundan sayılar yanyana dizilir.)


109876543210


NOT : Değişken birer birer değilde, ikişer veya farklı bir şekilde arttırılmak istenirse, artım miktarı i+=2 şeklinde yazılmalıdır.Azaltmak için ise i-=2 şeklinde yazılır.


<pre>
<script language="javascript">
<!--

for ( i=
0 ; i<=10 ; i+=2) {

document.writeln(i)

}

-->
</script>
</pre>



Bu durumda ekran çıktısı aşağıdakigibi olur.


0
2
4
6
8
10


FOR Döngüsü ile Tablo Oluşturma


Javascript ile "html etiketleride" yazdırılabilir.Ancak bu durumda ekranda doğrudan bu etiketler string şekilde görünmez.Sanki kod bölümüne yazılmış gibi durum bir oluşur.


<script language="javascript">
<!--

document.writeln("<h1>deneme</h1>")


-->
</script>


Script çalıştığında ekranda h1 etiketi özellikleri uygulanmış "deneme" yazısı görünecektir.


<script language="javascript">
<!--

document.writeln("<table border=\"1\"><tr><td>sütun1</td><td>sütun2</td></tr>")


-->
</script>


Script çalıştığında ekranda 2 sütun 1 satırlık bir tablo oluşacaktır. Burada kullanılan \" ifadesi turnak işaretini simgeler. Doğrudan tırnak yazmak parantez içindeki string ifadenin değişmesine yol açacağı için string içindeki tırnaklar \" şeklinde belirtilir.


<SCRIPT LANGUAGE="Javascript">
<!--


document.writeln("<table border=\"1\">")

for (i=0 ; i<=100 ; i++) {

document.writeln("<tr><td>"+ i +"</td></tr>")

}

document.writeln("</table>")



-->
</SCRIPT>


Burada 100 satın 1 sütunluk tablo oluşacaktır. Kodlara dikkat edilirse, öncelikle <table> etiketiyazırılarak tablo başlatılıyor ve ardından for döngüsü ile 101 (0 +100 ) adet <tr> ve bunun içindede <td> açılıyor. <td> etiketleri arasında yer alan "i" değişkeni string olmadığı için tırnak içine alınmaz. Dolayısıyla "i" değişkeninin her değeri ( 0dan 100e kadar) açılan bu satırlara yazılacaktır. Son olarak for döngüsünden sonra </table> etiketi kapatılıyor ve script bitiyor. Sonuçta 0dan 100e kadar numaralanmış 101 satırlık bir tablo oluşacaktır.


<SCRIPT LANGUAGE="Javascript">
<!--


document.writeln("<table border=\"1\"><tr><td>SAYI</td><td>x10</td></tr>")

for (i=0 ; i<=100 ; i++) {
k=i*10

document.writeln("<tr><td>"+i+"</td><td>"+k+"</td></tr>")

}

document.writeln("</table>")

-->
</SCRIPT>



Burada ise öncekiuygulamadan farklı olarak, sütun sayısı 2ye çıkarılıyor. Öncelikle table etiketi açılıyor ve hemen ardından bir satır ve iki sütun tanımlanıp, ilk sütuna "SAYI" ikinci sütuna "x10" yazılıyor. (bunlar başlık sütunları). Daha sonra for döngüsü ile i değişkeni 0 dan 100e kadar değer alırken aynı zamanda bir başka k değişkeninede "i" değişkeninin 10 katı atanıyor.Her döngüde açılan satırların ilk sütununa "i" değişkeninin değeri yazılırken, ikinci sütunlara "k" değişkeninin içeriği yazılıyor. </table> etiketi kapatılarak script sonlandırılıyor.Sonuçta 102 satır (başlık+[0-100]) 2 sütunluk bir tablo oluşuyor ve ilk sütundaki sayının 10 katı, 2. sütunda gösteriliyor.




"WHILE" Döngüsü .....(iken).........


Javascript kodu yazarken öyle durumlar olabilir ki, programın sayaç değişkeninin her değeri için yapmasını istediğiniz işi yapmasındansa, sadece belirli bir şart karşılanıyorsa (karşılandığı sürece) yapmasını tercih edebilirsiniz. Bunu “while” (...iken) ifadesiyle sağlarız. Bu yöntemle Javascript’e “filanca işi yap, ama falanca şart varsa (veya yoksa)” demiş oluruz.

“while” ile kuracağınız döngünün şartı rolünü oynayacak değişkenin daha önceden oluşturulması, içeriğinin başka bir yöntemle belirlenmesi ve değiştirilmesi gerekir; “for” döngüsünün aksine “while” şartlı döngüsü bunu sizin için otomatik olarak yapmaz. Ayrıca koyulan şarta bağlı olarak, “while” döngüsü sırasında yapılmasını istediğiniz iş hiç yapılmayabilir.

Genel Yapısı:



while (şart)

{

uygulanacak kod;

}



Şart sağlandığı sürece, süslüparanteziçerisindeki işlemler tekrar tekrar yapılacaktır. Tabi burada şart için kullanılan değişkenin ilk değeri genellikle while döngüsünden önce başlatılır ve whiledöngüsü içerisindede şarta bağlı olarak değiştirilir.


<script type="text/javascript">

var i=0;

while (i<=10)

{

document.write(i)

i=i+1

}

</script>


Script çalıştığında ekranda 012345678910 (write) görüntüsü elde edilir. Burada "i" değişkeninin ilk değeri 0 yapılarak while döngüsüne geçiliyor. i<=10 şartı, "i" değişkeninin değeri 10 veya 10'dan küçük olduğu sürece süslü parantez içindeki yap anlamına gelir.Yalnız burada döngüiçerisinde "i" değişkeninin değerinin 1 arttıırldığına (i=i+1) dikkat edin. ilk değer olarak 0 vwrildiği için şart sağlanır ve döngü başlar,ekranda 0 yazdırılı.Ardından "i" nin değeri 1 arttırılarak 0+1 = 1 olur . Şart sağlanmaya devam eder ve bu kez ekrana 1 yazdırılır. "i" yİne 1 arttırılır, bu kez 1+1=2 olacak ve şartyine sağlancaktır. Bu şekilde "i" 11 olana kadar döngü devam eder.


<script type="text/javascript">

var i=10;

while (i>=0)

{

document.write(i)

i=i-1

}

</script>


Burada ise "i" değişkenine lk değer 10 olarak verilmiş ve şart olarakta ,; "i" 0 veya 0dan büyük olduğu sürece denilmiş. Dolayısıyla döngü i=-1 olana kadar devam eder ve ekrana 109876543210 görüntüsü elde edilir.
"Do While" Döngüsü



While döngülerinde önce koşul kontrol edilir ve koşula göre işlem başlar. Do while döngüsünde ise kod şart kontrol edilmeden önce çalıştırılır. Sonra koşula göre durdurulur. Genel Yapısı:


do

{

yapıalacak işlemler

}

while (şart)

 

<script type="text/javascript">

var i=0;

do 

{

document.write(i);

i=i+1;

}

while(i<=10)

</script>


While döngüsü ile tamamen aynı işi yapar.Ancak burdaki fark, yapıalcak işlemlerin önceden yapılıp (do)şartın sonrasında belirtilmesidir. Script çalıştığında ekranda 012345678910 yazdırılacaktır.
Break (Kes) ve Continue (Devam Et)


Şartlı döngülerde (while, do while) , tekrar eden iş, şartın yerine geldiği veya gelmediği noktada kendiliğinden kesilecektir. Aynı otomasyon (durum) “for” döngüsünde break (kes) ve continue (devam et) komutlarıyla sağlanabilir.

Javascript, Break ile karşılaştığı anda döngüyü keser ve icraata döngüden sonraki ilk ifadeden devam eder. Continue ise Javascript’in döngünün o andaki adımını durdurup, diğer adımdan balmasını sağlar.

Break


<pre>
<script language="javascript">
<!--

for ( i=0 ; i<=10 ; i++) {

document.write(i)
if (i==5) break

}

-->
</script>
</pre>


Yukarıdaki scriptte for döngüsü ile "i" değişkeni 0dan 10a kadar değer almakta ve bu değerler sırasıyla döngü içerisinde ekrana yazılmaktadır. Fakat if (i==5) break satırıyla döngü içerisinde birkontrol yapılmakta ve "i" değişkeninin değeri 5 olduğunda döngü otomatik olarak bitirilmekte ve program sonraki satıra (süslü parantez sonrası) geçmektedir.Ancak sonrakisatırlarda herhangi bir kod olmadığından script bitirimektedir.Dolayısıyla ekranda 012345678910 yerine 012345 görünecektir.


<pre>
<script language="javascript">
<!--

for ( i=0 ; i<=10 ; i++) {

if (i==5) break
document.write(i)

}

-->
</script>
</pre>


Burada ise yukarıdakinden farklı olarak if cümlesi yazdırma işleminin önüne alınmış.Bur durumda "i" değişkeni 5 olduğunda break komutuyla döngü bitirilecek ancak bu kez ekran çıktısında 5 değeri görünmeyecektir. Ekran görünümü 01234 olacaktır.


Continue

<pre>
<script language="javascript">
<!--

for ( i=0 ; i<=10 ; i++) {

if (i==5) continue
document.write(i)

}

-->
</script>
</pre>


Burada break komutundan farklı olarak continue kullanılmış. Contunie komutu break gibi döngüyü tamamen bitirmek yerine, döngü değişkeninin o andaki değerini atlar. Örnekte if(i==5) continue satırıyla, "i" değişkeninin değeri 5 olduğunda, bu değeri atlaası ve döngüye tekrar başlaması sağlanmıştır. Yani i=5 olduğunda continue komutu programı for satırına gerigönderir ve i=6 olur. Döngü bu şekilde devam eder. Bir nevi "i" değişkeninin 5 değerine bloke konulmuştur. Dolayısıyla ekranda
012345678910 yerine 01234678910 görünecektir. Yani 5 sayısı atlanacaktır.


<pre>
<script language="javascript">
<!--

for ( i=0 ; i<=10 ; i++) {

document.write(i)
if (i==5) continue

}

-->
</script>
</pre>


Şayet if cümlesi yukarıdaki gibi yazdırma komutundan sonra yazılırsa bunun ekran çıktısına bir etkisi olmaz .Çünkü Programlar satır satır okuyrak çalışır.Yani "i"=5 olduğunda program önce document.write ile 5 i ekranda yazdıracak ve daha sonra if cümlesindeki continue ile karşılaşacak.Ancak continue komutu her ne kadar bunu atlatsada, 5 değeri ekranda yazılmışolacak ve zaten döngü kaldığı yerden devam edecektir. Sonuçta ekranda yine 012345678910 görünecektir.



NOT: Break ve Continue komutları script tasarlarnırken doğru konumlandırılmalıdır.Aksi takdirde herhangi bir kısıtlama sağlayamazlar.
 
 
"switch...case"
 
Swtich ifadesi ile, programa, bir değişkenin farklı durumlarına göre farklı durumlar yaptırılabilir. Bunun için swtich ile durumu kontrol edilecek değişken belirlenirken, case ile değişken durumları tek tek kontrol edilir.Her case belrilemesinin altında, case ilebelirtilen durum sağlandığında switch döngügüsünü bitirmek için break kullanılır.


Genel Yapısı:


swtich
(değişken)

{

case "durum1" :

yapılacaklar

break

case "durum2" :

yapılacaklar

break

case "durum3":

yapılacaklar

break

default:

yapılacaklar

break

}



Burada değişkenin 3 farklı durumuna göre yapılacaklar belirtiliyor. Sondaki "default" ifadesi , değişken "case"ler ile belirtilen durumlar dışında birdeğer aldığında anlamına gelir.
 


<script language="javascript">
<!--


var a=0

switch (a)

{

case "0" :

document.write("sayı 0")

break

case "1" :

document.write( "sayı 1")

break

case "2":

document.write( "sayı 2")

break

default:

document.write("sayı bilinmiyor")

break

}

-->
</script>


Burada a değişkeninin içeriği switch-case ile kontrol ediliyor. a değişkeninin içeriği 0 olarak ayarlandığı için ekranda sayı 0 yazacaktır. Burada break ifadeleri kullanılmasaydı ekranda tüm document.write komutuyla belirtilen yazılar görünecekti.. ("sayı 0 sayı 1 sayı 2 sayı bilinmiyor")