|
JavaScript ile Sayfalama - JavaScript Webmaster bilgi bankası, knowledge base Webmaster Araçları
AnaSayfa > JavaScript > JavaScript ile Sayfalama |
| Kategori | : JavaScript | Gönderen | : Admin | Tarih | : 2008-12-07 | Puan | : 4 | Katılımcı : 8 | Okunma | : 5975 | | | |
| | Elinizde çok uzun bir yazı var, bu yazıyı sitenizde yayınlamak istiyorsunuz ama çok uzun olduğu için sitenizin görünümünü bozacak endişesiyle bir türlü ekleyemiyorsunuz. ASP veya PHP gibi dilleri kullanarak bu yazıyı sayfalara bölebilirsiniz fakat bu sefer de her sayfa için sitenin yeniden yüklenmesi gerektiğinden bu durumun kullanıcıyı iteceğini düşündüğünüz için bunu da istemiyorsunuz. O zaman çözüm JavaScript´te. Aşağıdaki fonksiyonu tarif edildiği şekilde kullanacak olursanız, yazınızı istediğiniz boyutta hazırlamış olduğunuz DIV katmanı içine ekleyebilir ve sayfalar arasında tekrar yüklemeye gerek olmadan gezinebilirsiniz. Önce kodumuzun tamamını yazıp daha sonra satır satır ayrıntılarına girelim.
<div id="icerik" style="font:normal normal normal 11px verdana;border:1px solid #000000; width:400px;height:300px;padding:4px"> </div>
<div id="sayfalar" style="font:normal normal normal 11px verdana;border:1px solid #000000;width:400px;padding:4px;text-align:right">Sayfalar = </div>
<script language="JavaScript">
var metin = "Birinci sayfada okunacak yazı <!--bol-->İkinci sayfada okunacak yazı<!--bol-->Üçüncü sayfada okunacak yazı<!--bol-->Dördüncü sayfada okunacak yazı"
var bolum = ""
function bol(metin) {
bolum = metin.split("<!--bol-->")
for(i=0;i<bolum.length;i++) {
document.getElementById("sayfalar").innerHTML += "<a href="#" onclick="sayfaGoster("+(i)+")">"+(i+1)+"</a> "
}
}
function sayfaGoster(syf) {
document.getElementById("icerik").innerHTML = bolum[syf]
}
bol(metin)
sayfaGoster(0) //Javascript´in saymaya sıfırdan başladığını unutmuyoruz.
</script>
Öncelikle ilk iki satırı ele alalım:
<div id="icerik" style="font:normal normal normal 11px verdana;border:1px solid #000000; width:400px;height:300px;padding:4px"> </div>
<div id="sayfalar" style="font:normal normal normal 11px verdana;border:1px solid #000000;width:400px;padding:4px;text-align:right">Sayfalar = </div>
Buradaki DIV katmanlarının sadece ID özelliklerine dikkat edilmeli. Yazının ekleneceği katmanın ID´si "icerik", sayfa sayılarının yazdırılacağı katmanın ID´sinin de "sayfalar" olması gereklidir. Diğer tüm görsel değişiklikleri kendi isteğinize göre değiştirebilirsiniz.
Şimdi de scriptimize geçelim:
var metin = "Birinci sayfada okunacak yazı <!--bol-->İkinci sayfada okunacak yazı<!--bol-->Üçüncü sayfada okunacak yazı<!--bol-->Dördüncü sayfada okunacak yazı"
var bolum = ""
4. satır işleyiş için çok önemli. Elinizde bulunan yazıya uygulamanız gereken bir kural var. Yazınızı bölmek istediğiniz yerlere "<!--bol-->" ayracı koymanız gereklidir. Bu ayraçlar sayesinde yazınız bol() fonksiyonu kullanılarak sayfalara bölünecektir.
5. satırdaki "bolum" isimli değişkenimiz ise bol() fonksiyonu tarafından kullanılacaktır. bol() fonksiyonu, yazımızı belirttiğimiz yerlerden bölecek, bu değişkenimizin veri tipini dizi değişkeni türüne çevirecek ve bulduğu her sayfayı bu değişkenimizin içinde saklayacaktır. Nitekim 8. satırda bu işlem gerçekleşiyor:
bolum = metin.split("<!--bol-->")
10. satırda bulunan "for" döngüsü, "bolum" değişkeni sayesinde, "sayfalar" katmanına değişkenin dizi sayısınca sayfa linki ekler.
11. satırda eklenen link etiketlerinin "onclick" olaylarında; yazının görüntüleneceği "icerik" katmanında gösterilecek kısımların numaraları sayfaGoster() fonksiyonuna parametre olarak gönderilerek bu fonksiyon tetiklenir ve 12. satırda döngümüzün sınırı belirlenerek kapatılır.
for(i=0;i<bolum.length;i++) {
document.getElementById("sayfalar").innerHTML += "<a href="#" onclick="sayfaGoster("+(i)+")">"+(i+1)+"</a> "
}
15 ve 17. satırlar arasındaki sayfaGoster() fonksiyonu, kendisine parametre olarak gönderilen numarayı alır, "bolum" dizi değişkeninde bu sayıya denk gelen veriyi bulur ve "icerik" katmanının innerHTML özelliği kullanılarak bulunan veri bu katmana yazdırır.
function sayfaGoster(syf) {
document.getElementById("icerik").innerHTML = bolum[syf]
}
Son olarak sayfanın ilk yüklendiğinde sayfalama işleminin yapılabilmesi için scriptimizin bol() fonksiyonunu çağırıp yazımızı böldürmeli ve çıkan sonucun ilk değerini katmanımıza yazdırmalıyız. Bu, kullanıcı sayfayı açtığında ilk sayfayı görmesini sağlamak anlamına geliyor. 19. satırda "metin" değişkenimize atadığımız veriyi bol() fonksiyonu ile işletiyoruz:
bol(metin)
Ve 20. satırda da sayfaGoster() fonksiyonu ile elimizdeki ilk değeri "icerik" kısmına yazdırıyoruz (Bunu yapmazsak açılışta "icerik" katmanımız boş görünecektir).
sayfaGoster(0) //Javascript´in saymaya sıfırdan başladığını unutmuyoruz.
Artık yazımız istediğimiz boyutlarda ayarlanmış ve istediğimiz yerlerden kesilmiş vaziyette, sayfa yeniden yükleme sorunu olmadan sayfalar arasında anında geçişler yapmaya hazır şekle geldi. İyi yazılarda kullanmanız dileğiyle :)
NOT: Script hem Internet Explorer 6.0´da hem de Mozilla Firefox 1.0.4´te denenmiş olup herhangi bir hataya rastlanmamıştır. Scriptin düzgün çalışabilmesi için gerekli katmanların mutlak surette sayfaya eklenmiş olması, farklı isimler kullanılacaksa script kodu içerisinde gerekli yerlerin değiştirilmesi gerekmektedir. <SCRIPT> bloğu içerisindeki kodların 19 ve 20. satırlarının, katmanlar oluşturulduktan sonra <BODY> etiketleri arasına herhangi bir yere iliştirilmesi önemlidir. Diğer kodlar <HEAD> etiketi içinde de olabilir. Tavsiye edilen ise tüm script kodlarının <BODY> etiketi içinde katmanlar oluşturulduktan sonra herhangi bir yere eklenmesi yönündedir.
|
Yorumlar | Henüz Kimse Yorum Yapmamış, ilk yorumu siz ekleyin! | Yorum Ekleme Aparatı | Yorum Eklemek için lütfen sol menuden giris yapınız.. | Toplam 0 yorum listelendi. |
|