JavaScript ile bir fonksiyon yazdım ve başka yerlerden bu fonsiyonu çağırdım. Ancak, fonksiyona gelen isteğin, hangi nesneden geldiğini öğrenmek için, yeni bir parametre tanımlamak zorunda kaldım.
Daha somut olsun, örnek vereyim.
function Download(pSender, pURL){
var strHTML=""
if (pSender!=null){
var strTitle=pSender.innerText;
strHTML = "<span id='spnTitle'><b>" + strTitle + "</b></span><br>";
}
strHTML += "<br><span id='spnDownload'><a href='" + pURL + "'><b>İndir</b></a></span>";
document.getElementById("divWMP").innerHTML=strHTML;
}
Bu fonksiyonu çağıran linklerimiz şöyle olacaktır.
<a href="#" onclick="Download(this, 'http://www.freewebtown.com/m1gin/kisisel/kapi.wma')">Mustafa Birgin - Kapıyı Kim Çaldı?</a><br>
<a href="#" onclick="Download(this, 'http://www.freewebtown.com/m1gin/audio/Miyav_Miyav.mp3')">Mustafa Birgin & Mustafa Kütükçü - Miyav Miyav</a><br>
Görüldüğü gibi, her kullanımda, "this" ibaresini kullanmak durumunda kalıyoruz.
Acaba bunu kullanmadan, fonksiyona istek gönderen nesneyi öğrenebilir miyiz?
Uzun süre araştırdım; belki doğru anahtar kelimeleri kullanmadım, ama olumlu bir sonuç elde edemedim. Zaten o yüzden yukarıdaki yöntemi kullandım.
Ve az önce, tesadüfen (belki tevafuken) bir örneğe rastladım! İçerisinde "event.srcElement" gibi bir bölüme rastladım. Heyecanla, hemen denemeye giriştim.
function Download(function Play(pURL){
var pSender = event.srcElement;
var strHTML=""
if (pSender!=null){
var strTitle=pSender.innerText;
strHTML = "<span id='spnTitle'><b>" + strTitle + "</b></span><br>";
}
strHTML += "<br><span id='spnDownload'><a href='" + pURL + "'><b>İndir</b></a></span>";
document.getElementById("divWMP").innerHTML=strHTML;
}
Böylece bu fonksiyonu çağırırken, "this" ibaresini kullanmak zorunda olmayacaktım artık!
<a href="#" onclick="Download('http://www.freewebtown.com/m1gin/kisisel/gosteri.wma')">Mustafa Birgin - Gösteri</a><br>
<a href="#" onclick="Download('http://www.freewebtown.com/m1gin/audio/Daniel_Bernoulli.wma')">Mustafa Birgin - Daniel Bernoulli</a><br>
Yaşasın event.srcElement
Tüm olay buydu!
Yararlı olması umuduyla...