İşte kaynak:
Aslında söylemeliyim ki JavaScript'in tam bir tarih türü yoktur. Ama
yukarıda belirttiğim gibi tarih ile hoş bir şekilde çalışabilirsiniz.
Programlama dilleri ve scriptlerde raslantısal sayıların kullanımları
genel bir sorundur. Şu anda JavaScript'te 'random' (Raslantı) fonksiyonu
yok fakat inanıyorun ki yakın bir gelecekte o da
yaratılacaktır. Şu anda ise bazı hilelerle raslantısal sayı
kullanabilirsiniz. Aslında bu tam olarak bir hile sayılmaz. Bu gerçekten
de birçok programcının kullandığı bir yoldur. Burada işin mantığı
raslantısal sayıyı hesaplamak. Makinanızın tarih ve zamanını alıp onu
çeşitli şekillerde kullanabilirsiniz. Zaman gayet büyük bir sayıdır ve bu
sayıyla bazı hesaplar yapabilirsiniz. Örneğin sinüsünü alıp mutlak değeri
ile işlem yapabilirsiniz. Elde edeceğiniz sayı 0 ile 1 arası bir sayıdır.
Zaman da her milisaniye değiştiğinden iki tane aynı sayıyı alma riskiniz
de olmaz böylece. Eğer kısa bir süre içinde birçok raslantısal sayı
hesaplayacaksanız sin()'i tek başına kullanabilirsiniz. Ancak elde
edeceğiniz sayı bir sinüs eğrisini takip edecektir. Bu pek de raslantısal
sayılmaz. Ancak eğer 20 saniyede bir raslantısal sayı elde edecekseniz
yukarıdaki mükemmel bir fonksiyondur.
Bu bir raslantısal sayıdır:
.40123505828020745
Bu örneğin kaynağı:
Pek tabii ki buradaki random (raslantı) fonksiyonu her durum için mükemmel
değildir. Burada amaç olayın ana mantığını anlatmaktır. Şimdi size Maynard
Demmon'dan aldığım bir fonksiyonu göstermek istiyorum. Yapmanız gereken
limit değerlerini ayarlamak. Örneğin 100 verdiğiniz zaman 0 ile 99
arasında iyi bir raslantısal sayı elde edebileceksiniz. İşte kaynağı:
Pencere yaratmak JavaScript'in harika bir özelliğidir. Kendiniz
istediğiniz özellikte pencereler yaratabilir ve bu pencereye HTML dökümanı
yazdırabilirsiniz. Şimdi size nasıl yeni bir pencere açabileceğinizi ve
ona nasıl birşeyler yazabileceğinizi göstermek isterim. Şimdi eğer
aşağıdaki düğmeye basarsanız birazdan açıklayacaklarımın örneğini
görebilirsiniz.
Töre ve geleneklere bağlı kalmayarak bu pencereye Hello world!
yazmadım...İşte kaynak:
Pencerenizi açıp onu msg olarak adlandırdıktan sonra pencerenize yazmaya
başlayabilirsiniz. Artık normal HTML komutlarıyla istediğinizi
yazabilirsiniz. Ayrıca kullanıcının hazırladığınız forma girdiklerini yeni
pencerenize de yazdırabilirsiniz. Ya da yine hazırladığınız bir forma
kullanıcı adını girer ve yeni açılan pencerede kullanıcı adını
kullanabilirsiniz. Yalnızca birkaç ay önce bu sadece cgi ile mümkündü!
Lütfen dikkat:
Yeni açtığınız pencereye birşey yazarken en son satırın sonuna
mutlaka <BR> komutu koyunuz. Aksi takdirde son satırı
göremeyebilirsiniz.
onMouseover Özelliği
JavaScript dilinde bir sonraki özelliği farenizi bu
link'in üzerine getirerek görebilirsiniz.
Sadece alıcınızın en altındaki 'statusbar'a bir bakın. Bu özelliği
fonksiyonlarla birleştirerek daha ilgi çekici şeyler yaratabilirsiniz.
Şimdi bu
link'in üzerine farenizi
getirdiğinizde yeni bir pencere oluşacaktır. Bu iki olayın kaynaklarına
bir göz atalım:
<a href="saçma.html" onMouseOver="window.status='Saçma bir link işte...';
return true">
Tek yapmanız gereken <a> komutuna onMouseover özelliğini eklemeniz.
'window.status' komutu da alıcınızın statusbar'ına yazı yazabilmenizi
sağlar. Ayrıca dikkatinizi çektiyse tırnak işaretlerini de değişik
kullandık. Hep " işaretini kullanamazsınız. Çünkü JavaScript
statusbar'a neyi yazacağınızı anlayamaz. Ayrıca çift tınak işaretini
kapamadan önce ;return true yazmanız da gereklidir.
İkinci örnek JavaScript'i 'alert' fonksiyonunu kullanır. İkincinin kaynağı
ise şöyledir:
<html>
<head>
<script language="JavaScript">
<!-- Hiding
function selam() {
alert("Selam!");
}
// -->
</script>
</head>
<body>
<a href="" onMouseOver="selam()">link</a>
</body>
</html>
Bu da kolay sayılır. Bu örnekte de onMouseover metodu kullanılmıştır. Bu
metodla selam() fonksiyonu çağırılmıştır.
Daha Fazla Tarih Fonksiyonu
Şimdi size tarih ve zaman ile ilgili başka bir örnek vermek istiyorum.
Daha önceki bölümde lastModified özelliğini görmüştünüz. Şimdi
sayfamıza yerel saati koyacağız. Bu metod sayfaya bağlanan makinanın
saatini kullanır. Bu yüzden eğer makinanın saati yanlışsa bu saat de doğal
olarak yanlış saati gösterecektir.
<script language="JavaScript">
</script>
İlk başta bir tarih değişkeni yaratıyoruz. Bu bugün = new Date()
(Bugün = yeni tarih) ile gerçekleştiriliyor. Eğer özel bir zaman ve tarih
tanımlamazsak alıcı yerel zamanı today değişkenine verir. Burada
dikkat edin. today değişkenini hiçbir yerde belirtmemize gerek yok.
Bu, JavaScript'in Java ve diğer birçok programlama dilinden farkıdır. Bu
dillerde kullanacağınız değişkenin türünü önceden belirtmeniz gerekir. Biz
burada yerel zaman ve tarihi tutan bir obje yarattık. Şimdi rahatça
içeriğini yazabiliriz. Her get.... metodundan önce today yazmanız
bir zorunluluktur. Aksi takdirde alıcı hangi objeyle karşılaştığını
bilemez. getMonth() metodu 0 - 11 arasında rakamlar oluşturur. (0 ocak
ayını; 11 aralık ayını temsil eder. Bu yüzden doğru ayı bulabilmek için
getMonth() fonksiyonuna '1' eklememmiz gerekir.
Tarih yaratarak yapabileceğiniz ilginç şeyler var tabii ki. Örneğin bir
dökümanı yarattığınız tarihi tanımlayabilirsiniz. Böylece bir kişinin kaç
gün sonra o dökümanı okuduğunu da hesaplayabilirsiniz ve mesela eğer 10
günden geç okuyorsa ona şöyle bir mesaj gönderebilirsiniz:
Hey, bu döküman artık bayatladı. İstersen hiç okuma!
Bunun için yukarıda 'bugün'ü tanımladığınız gibi bir gün tanımlamalısınız:
dökhazır = new Date(96,0,13)
Önce yıl, sonra ay(Ayın '0'dan başladığını unutmayınız) en sonra da günü
tanımlamak zorundasınız. Aynı şekilde zamanı da tanımlayabilirsiniz:
dökhazır= new Date(96,0,13,10,50,0)
İlk üç rakam yine tarihi simgeler. Daha sonra sırayla saat, dakika, saniye
tanımlanır.
Raslantısal Sayılar
<html>
<head>
<script language="JavaScript">
function RandomNumber() {
bugün = new Date();
num= Math.abs(Math.sin(today.getTime()));
return num;
}
</script>
</head>
<body>
<script language="JavaScript">
<!--
document.write("Bu bir raslantısal sayıdır:", RandomNumber());
// -->
</script>
</body>
</html>
function random() {
bugün = new Date();
num = today.getTime();
num = Math.round(Math.abs(Math.sin (num)*1000000)) % limits;
return num;
}
Pencere Yaratmak
<html>
<head>
<script language="JavaScript">
function PencereAç() {
msg=open("","Pencereadı","toolbar=no,directories=no,menubar=no");
msg.document.write("<HEAD><TITLE>Hey!</TITLE></HEAD>");
msg.document.write("<CENTER><h1><B>Kıyak değil mi?</B></h1></CENTER><br>");
}
</script>
</head>
<body>
<form>
<input type="button" name="Button1" value="Bana Basın" onCLick="WinOpen()">
</form>
</body>
</html>
Her zamanki gibi fonksiyonu çağıran bir düğme var. 'PencereAç' fonksiyonu
'open' (Aç) metodu ile yeni bir pencere açar. İlk tırnaklar pencereye
yazılacak sayfanın URL'sini belirtir. Buraya herhangibir adres
yazabilirsiniz. Eğer herhangibir sayfa yüklemeyecekseniz JavaScript ile de
pencereye yazabilirsiniz. İkinci tırnaklar pencere adını tanımlar.
Herhangibir isim verebilirsiniz fakat tek eklime olmak zorundadır. Bu isim
çerçeve (frame) 'lerdeki isimlerle aynı mantıktadırlar. Bu pencere ile
yapacağınız işlemler için bu ismi kullanırsınız. Üçüncü tırnaklar
pencerenin özelliklerini içerir. Bu gerçekten de ilginçtir. Eğer örneğin
'toolbar' istiyorsanız toolbar=yes yazmanız yeterli olacaktır.
Aşağıda bu özellikler ve tanımları yer almaktadır. Bunları yukarıdaki
örnekte olduğu gibi kullanmalısınız ve aralarında boşluk bulunmamalıdır.
toolbar - Back, Forward, Home vs. düğmelerinin bulunduğu kısım
location - Adresi yazdığınız kısım
directories - En üstteki kısım
status - En alttaki küçük pencere(Statusbar)
menubar - Netscape'deki location'ın altındaki kısım
scrollbars - Sağda ve alttaki sayfayı yukarı aşağı hareket ettiren
kısımlar
resizable - Pencerenin büyüklüğünün değiştirilebilirliği
copyhistory - Ana sayfanın hafızada tuttuğu adresler yeni pencereye
aktarılsın mı?
width=pixels - Genişlik(Piksel)
height=pixels - Yükseklik(Piksel)
Başka bir dip not:
Eğer yeni açtığınız pencereye resim koyacaksanız height ve
width özelliklerini de <img> komutunun içine yerleştiriniz.
Bunun eksikliği yüzünden sayfada resimden kaynaklandığını tahmin
edemeyeceğiniz hatalar ortaya çıkabilir.
11.Mayıs'96
© 1996 - Stefan Koch