JAVA SCRIPT TEMELLERİ
JAVA SCRIPT’E GİRİŞ Netscape Navigator 2.0 ile birlikte geliştirilen JavaScript dili istemci taraflı (client-side ) script dilidir. Web sayfalarında dinamik içerik sağlamak ya da kullanıcıyla iletişim kurmak için kullanılır. İlk başta yalnızca Netscape tarayıcıları için tasarlanan JavaScript, daha sonra diğer tarayıcılar tarafından da desteklenen genel bir scripting dili haline gelmiştir. Şu anda Navigator 4.0 tarafından desteklenen JavaScript 1.2 sürümü vardır. Microsoft Internet Explorer 3.0 ile JavaScript 1.0ı desteklemektedir. İPUCU: HTML kodları arasına yerleştirilen küçük kodlardır. Tek başına .js uzantılı JavaScript kodları da yazılabilir. JavaScript, Java dilinin bir Light versiyonu değildir. JavaScript kendi başına bir script dilidir. Genellikle HTML sayfalarında kullanıcı kontrolleri eklemek, formları kontrol etmek, hesaplamalar yapmak gibi işler için kullanılır. Tablo: Tarayıcılar ve JavaScript desteği. Tarayıcı Versiyonu JavaScript Desteği Netscape 3.0 1.1 Netscape 4.0 1.2 Internet Explorer 3.0 JScript 1.0(approx. 1.0 ) Internet Explorer 4.0 JScript 2.0(approx. 1.1 + full DOM ) … Internet Explorer 8.0
JAVA SCRIPT’E GİRİŞ JavaScript kullanımının iki ana alanı vardır: istemci taraflı ve sunucu taraflı script yazmak. Şu anda HTML sayfalara gömülü yazılan scriptlerin çoğu JavaScript kullanılarak yazılmaktadır. Bunlar da genellikle kullanıcı bilgilerinin doğru girilip girilmediği ya da kullanıcıya veri girişinde ya da menü kullanımında seçenekler sağlamaktır. Sunucu taraflı JavaScript, aynı ASP gibi çalışmaktadır. Sunucu Taraflı JavaScript Sunucu taraflı JavaScript (SSJS ) ise temel JavaScripte ek olarak nesneler ve işlevler katılarak veritabanlarına erişim, e-mail gönderme ve diğer işlemlerin yapılması sağlanır. SSJS, veritabanı temelli Web uygulamalarının yaratılmasını sağlar.
Bir Web sayfası organizasyonunda JavaScriptleri Web sayfasına eklemek için değişik yollar vardır: . HEAD bölümünde . BODY bölümünde . BODY içinde URL olarak. <HEAD> İçinde: Bir HTML belgesinde HEAD bölümü içinde <SCRIPT> etiketi kullanarak istediğiniz JavaScrip kodunu HTML belgesine ekleyebilirsiniz. Bu kodlar HTML sayfasının BODY kısmı yüklendikten sonra kullanıma hazır hale gelir. Örnek Kod Alanı: <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function AlertTest( ) { alert("Dikkat!" ); } // --> </SCRIPT> </HEAD> <BODY>
<BODY> İçinde HTML belgesinin BODY kısmında JavaScript kullanmak için iki yol vardır: Doğrudan çalışacak kodlar ve kullanıcı tarafından çalışacak kodlar: Doğrudan çalışacak JavaScript kodları <SCRIPT> etiketi kullanılarak HTML belgesinin istenilen yerine yazılır. Bu cümleler tarayıcı tarafından okunduğu anda yerine getirilir: Kod Alanı: <SCRIPT LANGUAGE="JavaScript"> <!-- document.write("Son okunma tarihi" + document.lastModified ) //--> </SCRIPT> Daha çok kullanılan diğer bir yöntem ise kullanıcı tarafından bir olayın başlatılmasıyla bir JavaScript kodunun çalıştırılmasıdır. Örneğin bir düğmeye tıklamak gibi: Kod Alanı: <FORM> <INPUT TYPE="BUTTON" NAME="TestButton" VALUE="Tıkla" onClick="AlertTest( )"> </FORM>
JavaScript dilinin temel gramer yapısına bir bakalım: İşletme Sırası: HTML belgesinde JavaScript eklendiğinde, kodun işletimi sırasıyla yapılır. Ancak fonksiyon ve belli bir olaya (ONCLICK gibi ) bağlı olan JavaScript kodlarının işletimi o anda yapılır. Değişkenler: Bir değeri içeren bellek adlarını ifade ederler. İşleçler (Operators ): Değerler ya da değişkenler arasında toplama, çıkarma gibi işlemlerin yapılmasını sağlarlar. İşleçler +, *, /, - gibi işaretlerle kullanılır.
İfadeler (Expression ): Değişkenlerin, işleçleri ve deyimlerin bir araya gelerek oluşturdukları yapılara ifade derin. Örneğin: "Ucret = Gün * Yevmiye" formülü bir ifadedir. Deyimler (Statements ): Deyimler belli bir komut ya da söz dizimi bileşenlerinin grubuna verilen addır. Örneğin bir komut ya da bir IF yapısı deyimi oluşturur: Kod Alanı: if (toplam>20 ) {deyimler;} else {deyimler;} Nesneler (Objects ) Kendi değerleri, özellikleri ve işlemleri olan bileşenlere nesne (object ) denir. JavaScript dilinde çok sayıda yerleşik nesne vardır.
HTML İçinde JS Yazmak Fonksiyonlar (Functions ) Bir JavaScript fonksiyonu diğer dillerdeki bir fonksiyon yordam ya da bir alt yordam anlamına gelir. Bir fonksiyon bir dizi işlemi yerine getirir ve bir sonuç döndürür. Ayrıca fonksiyonlar, parametre olarak kabul edilen birçok değer kabul ederler. Kod Alanı: function adi( ) { deyim 1 deyim 2 ... deyim N }
HTML İçinde JS Yazmak Case Sensitivity JavaScript case sensitive (büyük küçük harf duyarlı) bir dildir. Değişkenler ve diğer öğeler küçük ya da büyük yazılabilirler. Ancak A değişkeni ile a değişkeni birbirinden farklıdır. Kod Alanı: <SCRIPT LANGUAGE="JavaScript"> <!-- test= "küçük harf"; TEST= "BÜYÜK HARF"; document.writeln("test = "+test+"<BR>" ); document.writeln("TEST = "+TEST+"<BR>" ); //--> </SCRIPT> Açıklamalar Bütün programlama dillerinde olduğu gibi, kod yazarken açıklama yazmak için kullanabileceğimiz bir karakter vardır. JavaScriptte bu <!- ve //-->. işaretlerinin arasıdır. Kod Alanı: <!-bu bir açıklamadır //-->. JavaScript kodu diğer programlama dillerinde olduğu gibi deyimlerden (statements ) oluşur. Bu deyimler atama, değerleri karşılaştırma ve işlemlerin yapılması için komutlar anlamına gelmektedir.
HTML İçinde JS Yazmak Değişkenler verileri saklarlar ve onlara erişimi sağlarlar. Bir değişken bir değeri işaret eder. Örneğin Ucret adlı değişkene bir kişinin ücret bilgisi konur. Değişkenler adlarıyla işaret edilirler. Bir JavaScript değişkeni belli kurallara uymak zorundadır: Kapsam Bir değişkene bir değer verildiğinde bu değer ne kadar zaman geçerli olacak? Bu sorunun yanıtı kapsam (scope ) kavramını ortaya çıkarır. Bir değişkenin kapsamı global ya da lokal olabilir. Bir global değişkene sayfa üzerinde herhangi bir JavaScriptten erişilebilir. Lokal değişken ise değerin atandığı yordam içinde geçerlidir. Bir değişkene kendisine atama yaparak değer verilir: Kod Alanı: Ucret= 1000000;
HTML İçinde JS Yazmak Bir fonksiyon yazıyorsanız, yerel bir değişken yaratmak istersiniz. Bu yerel değişkenler var sözcüğüyle tanımlanır: Kod Alanı: function YeniFonksiyon( ) { var dongu=1; toplam=0; ...deyimler... } Yukarıdaki örnekte döngü adlı değişken YeniFonksiyon için yerel, toplam değişkeni ise tüm sayfa için genel (global ) olacaktır. Değişkene bir değer atanır. Bu herhangi bir tür veri olabilir. Bununla birlikte JavaScript, verinin değişik türlerde olmasını bekler. Verinin türüne bağlı olarak değer üzerinde belli işlemler yapılabilir ya da yapılamaz. Örneğin iki string değer üzerinde aritmetik işlem yapılamaz.
Değişkenler ve Veri Türleri Tablo: Değişken Türleri Numbers Integer ve kayan noktalı sayılar içerir. Positif, 0 ya da negatif olabilir. Booleans True ya da False. Strings Karakter bilgi içeren bir değişkendir. Objects nesne= new Object( ); Null Değersiz. Undefined Bir değişken yaratıldıktan sonra içerdiği tanımsın değer. İşleçler (Operators )İşleçler, iki ya da daha fazla değer üzerinde işlem yapılmasını sağlar. JavaScript içinde aritmetik ve hesaplama işleçleri olmak üzere iki tür işleç kullanılır: Tablo: İşleçler + Toplama - Çıkarma * Çarpma / Bölme % Bölmede kalanı verir. Örneğin: 10 % 3 işlemi 1 değerini verir. ++ Tek artırım. Değer 1 artırılır. -- Tekli azaltma. - Negatifleştirme: İşlenenin negatif değerini döndürür.
Değişkenler ve Veri Türleri Karşılaştırma Karşılaştırma işleci, iki ya da daha çok değeri birbiriyle karşılaştırarak True ya da False olarak mantıksal bir değer döndürür. İşlenenler sayısal ya da karakter değer olabilir. Tablo : Karşılaştırma işleçleri == İşlenen değerler eşitse True döndürür. != İşlenen değerler eşit değilse True döndürür. > Soldaki değer sağdakinden büyükse True döndürür. >= Soldaki değer büyük ya da eşitse True döndürür. < Soldaki değer sağdaki değerden büyükse True döndürür. <= Soldaki değer sağdaki değerden küçük ya da eşitse True döndürür.
Değişkenler ve Veri Türleri İşleçler İkili işleçler birden çok karşılaştırma işlemini tek bir koşul ifadesi olarak birleştirirler. Örneğin VergiDurum =1 AND Ucret > 1000 ise gibi. Tablo : ikili işleçler. && "And" İki ifade de doğruysa True döndürür. || "Or" İfadelerden birisi doğruysa True döndürür. ! "Not" Negatifleştirme işlemi doğruysa True döndürür. Atama Deyimi Atama deyimi (=), bir değişkene bir değerin atanmasını sağlar. Değişkenlere türlerine ve tanımlamalarına uygun olan herhangi bir değer atanabilir. = Değerler değişkenlere sağdan atanırlar. Örnek: toplam=100; Örnek: toplam=(ucret+vergi+ekkazanc ) += (ayrıca -=, *=, /= ) Sağdaki değeri soldaki değişkene atar: Örneğin: toplam+=ekkazanc (ekkazanc değerini toplam değerine ekler ve sonucu toplam değerine ekler )
JS Nasıl İşler?? Java Script <script> .. </script> kodları arasında ve .Js Uzantılı dosyalar halinde HTML’e link edilerek çalısır.. Genellikle HEAD tagları arsında işler.. Java Scriptler kullanıcıların browserinde yorumlanır.. Ve yorumlanırkende yansıltılır.. Java Scriptlerin çalısması için olayların gercekleşmesi lazım. Olayları listeleyelim.. Olaylar : OnClick OnMouseOver OnMouseOut OnSubmit OnChange OnLoad OnUnLoad OnSelect OnReset OnError Java Scriptler bu olaylarla meydana gelebilir.. Java Script Temelleri : Window : Tarayıcı ekranı.. Frame : Frame Ve Framedeki nesnelerin tümü.. Document : Tarayıcı ekranında görüntülenen sayfa alanı.. Location : Tarayıcı ekranında o anki sayfanın URL adresi.. History : Tarayıcının ziyaret ettigi sayfalarin bellekteki yeri..
Kullanıcıya Mesaj Vermek Mesela sayfamıza giren birisini selamlayalım.. Bunun için Alert komutumuzu , OnLoad olayıyla birlikte kullanalım, çünkü sayfa açıldığında kullanıcıya bir mesaj vereceğiz.. Kod Alanı: <Script Language="JavaScript"> Function mesaj( ) { Alert(Sayfama Hoşgeldin Ziyaretci ) } </Scipt> İşte bu kullanıcımıza vereceğimiz mesajın kodları.. Bu kodlar <head> .. </head> tagları arasına yazılmalıdır.. Simdi bu kodu çalıştırmamız gerekiyor. Bu da sayfa yüklemesi yani OnLoad olsun.. Bunun İçin HTML Taglarını Kullanıyoruz.. Kod Alanı: <Body OnLoad="mesaj( )">
Kullanıcıya Mesaj Vermek Body tagımızın içine bir ekleme yaparak işlemimizi yapabiliyoruz.. Örnegimizin tam kodları şöyle olmalı : Kod Alanı: <Html> <Head> <title>Java Scriptte Mesaj</title> <Script Language="JavaScript"> Function mesaj( ) { Alert(Sayfama Hoşgeldin Ziyaretci ) } </Scipt> </Head> <Body OnLoad="mesaj( )"> </Body> </Html>
Kullanıcıdan Bilgi Alımı Kullanıcıdan bilgi girişi yapmasını isteyelim.Yani kullanıcıdan bilgi alalım.. Bunun için gereken komutumuz Window.prompt dur. Şimdi bunu kullanmayı öğrenelim.. Kod Alanı: <Script Language="JavaScript"> Function Ad( ) { isim=Window.Prompt("Adınızı Giriniz"," " ) } </Script> Bu komutlarla adı girdirdik. Şimdide bunu kullanıcıya bir mesaj olarak bildirelim.. Kod Alanı: <Script Language="JavaScript"> Function Ad( ) { isim=Window.Prompt("Adınızı Giriniz"," " ) Alert(Adınız :+" "+isim ) } </Script>
Kullanıcıdan Bilgi Alımı Böylecede girilen ismi kullanıcıya mesaj olarak yazdırdık.. Ama bunların çalışması için bir olayın gerçekleşmesi gerekmektedir.. Sayfa açılışında da gerçekleşebilir veya bir butona basılınca bunlar gerçekleşebilir.. Kod Alanı: <html> <head> <title> Adınızı Giriniz </title> <Script Language="JavaScript"> Function Ad( ) { isim=Window.Prompt("Adınızı Giriniz"," " ) Alert(Adınız :+" "+isim ) } </Script> </head> <body> <input type="Submit" Name="Buton" Value="Giris" OnClick="Ad( )"> </body> </html>
Kullanıcıdan Bilgi Alımı Böylece butona basıldığında kullanıcıdan bir iletişim penceresiyle adını girmesi isteniyor.. ve girilen adı mesaj olarak kulanıcıya bildiriyor.. Peki ya girilen adı sayfa alanına yazdırmak isteniyorsa ne yapmalıyız.. Mesaj göstermemiz için gereken kodumuzu silip, döküman alanına yazdırmamız için gereken kodu yazmalıyız.. Hemen yapalım.. Kod Alanı: <Script Language="JavaScript"> Function Ad( ) { isim=Window.Prompt("Adınızı Giriniz"," " ) Alert(Adınız :+" "+isim ) } </Script>
Kullanıcıdan Bilgi Alımı Böylece girilen ismi kullanıcıya mesaj olarak yazdırdık.. Ama bunların çalışması için bir olayın gerçekleşmesi gerekmektedir.. Mesela butona basılınca bunlar gerçekleşsin.. Kod Alanı: <html> <head> <title> Adınızı Giriniz </title> <Script Language="JavaScript"> Function Ad( ) { isim=Window.Prompt("Adınızı Giriniz"," " ) Document.write(Adınız : +isim ) } </Script> <head> <Body> <input type="Submit" Name="Buton" Value="Giris" OnClick="Ad( )"> </Body> </html>
Operatörler Logical Operators Mantıksal işlemciler iki veya daha fazla karşılaştırma işlemini aynı anda değerlendirerek sonucu true veya false olarak değerlendirmemizi sağlar. Örneğin bir web sayfasına giriş izni için şifre ve kullanıcı adı sorduğumuzu varsayalım. Bu iki değerinde doğru(true ) olması halinde sayfaya giriş izni verilmesi için mantıksal işlemciler kullanılır. ! Değil anlamındadır. Kod Alanı: mutluyum = false; if (!mutluyum ) { trace("Mutlu değil, çok üzgünüm" ); }
Operatörler && Ve anlamındadır. Kod Alanı: tur=2; skor=77; zafer = (tur<= 3 ) && (skor>= 75 ); if (zafer ) { trace("Oyunu Kazandınız!" ); } else { trace("Tekrar Deneyin!" ); }
Operatörler || Veya anlamındadır. verilen iki karşılaştırmadan birisinin true olması işlemin devamını sağlar. Kod Alanı: tur=2; skor=77; if ((tur==2 )||(skor>100 ) ) { trace("Oyunu Kazandınız!" ); } else { trace("Tekrar Deneyin!" ); }
Operatörler // yukardaki örnekte oyunda kazanılan tur sayısı iki, skor değeri 100 ün altındadır. Sadece istenilen tur sayısı yetrli olmasına rağmen sadece bir değerin doğru olması yeterli olacağından output penceresinde oyunu kazandınız mesajı çıkacaktır. Miscellaneous Operators -- ve ++ Eksiltme ve arttırma işlemidir. Genellikle sayaçlarda kullanılır. i-- ile i=i-1 ve i++ ile i=i+1 ifadeleri aynı anlamdadır. Kod Alanı: i = 0; while(i++ < 5 ){ trace("bu bir denemedir" + i ); }
Operatörler // i=i+1 anlamında kullanıldığından sayacın değeri birer birer artacak ve bu nedenle çıktı olarak 5 sonuç bize gösterecektir.Output penceresinde şu ifadeler görülür: bu bir denemedir1 bu bir denemedir2 bu bir denemedir3 bu bir denemedir4 bu bir denemedir5 ? Kullanımı: işlem1 ? işlem2 : işlem3 Değerlendirme işlem1 e göre yapılır. Şayet işlem1 sonucu true olursa değer işlem2 ye dolayısıyla işlem3 e atanmış olur. Kod Alanı: x = 5; y = 10; z = (x < 6 ) ? x: y; trace (z ); // Sonuç 5 olacaktır. İşlem1 x<6 dır . x değeri 5 olduğundan sonuç true kabul edilir ve x değeri olan 5 y değişkenine dolayısıyla z değişkenine atanır.
Örnekler <HTML> <HEAD> <TITLE>ORNEK1</TITLE> <SCRIPT LANGUAGE="JavaScript"> var soru="10+10 KAC EDER?"; var cevap=20; var dogru='<IMG SRC="correct.gif">'; var yanlis='<IMG SRC="incorrect.gif">'; // SORU DEGERI VERILIYOR var yanit= prompt(soru,"0"); // CEVAP KONTROL EDILIYOR var sonuc = (yanit== cevap) ? dogru : yanlis; </SCRIPT> </HEAD> <BODY> // SONUCU GOSTER document.write(sonuc); </BODY> </HTML>
Örnekler <HTML> <HEAD> <TITLE>ORNEK2</TITLE> <SCRIPT LANGUAGE="JavaScript"> </HEAD> <BODY> var gun= prompt(“Bugun gunlerden ne?”,"0"); if (gun == “Cumartesi“ || gun == “Pazar“) { document.writeln(“Bugun Haftasonu!"); } else document.writeln(“Bugun Haftaıcı"); </BODY> </HTML>
Örnekler <HTML> <HEAD> <TITLE>ORNEK3</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> var answer = ""; var correct = "100"; var question = "What is 10 * 10?"; for (k = 1; k <= 3; k++) { answer = prompt(question,"0"); if (answer == correct) alert ("Correct!"); break; } </SCRIPT> </BODY> </HTML>
Örnekler Num değişkeninini kullanarak, 1’den 10’a kadar sayı değerlerini ekrana yazdırınız. (while döngüsünü kullanınız daha sonra ayni soruyu for döngüsü ile çözümleyiniz) <HTML> <HEAD> <TITLE>ORNEK4</TITLE> <SCRIPT LANGUAGE="JavaScript"> </HEAD> <BODY> var num = 1; var num=1; while (num <= 10) for(num=1;num<=10;num++) { { document.writeln(num); document.writeln(num); num++; } } </BODY> </HTML>