我試圖用我自己製作一個javascript畫廊腳本。 當我完成它時,我非常高興,直到我注意到它在IE6中不起作用。 在FireFox中一切都很好。所以我開始調試。JavaScript函數回調和事件
我注意到,那是的setAttribute的肯定的問題之一。甚至可能是最大的。 因此,在查看關於使用參數設置onclick屬性的暗示article之後,我很高興,但有一件事對我來說依然沒有解決。使用回調方法很棘手,但我只是不知道如何傳遞事件對象。這裏是舊的代碼示例:
var miniatury = document.getElementsByTagName ("a");
function zoom(){
for (l = 0; l < miniatury.length; l++) {
if (miniatury[l].className.match("zoom") != null ) {
var href = miniatury[l].href;
if (document.images) {
preImg[l] = new Image();
preImg[l].src = href;
miniatury[l].setAttribute("onclick", "przybliz(preImg["+[l]+"].src, event); event.returnValue=false; return false;");
}
else {
miniatury[l].setAttribute("onclick", "przybliz(href, event); event.returnValue=false; return false;");}
}
}
}
function przybliz(adres, event) {
pojemnik.style.display = 'block';
if (navigator.appName == "Microsoft Internet Explorer") {
pozycjaX= window.event.clientX + document.documentElement.scrollLeft
+ document.body.scrollLeft;
pozycjaY= window.event.clientY + document.documentElement.scrollTop
+ document.body.scrollTop;
}
if (navigator.appName != "Microsoft Internet Explorer") {
pozycjaX = event.clientX + window.scrollX;
pozycjaY = event.clientY + window.scrollY;
}
pojemnik.style.top = pozycjaY+'px';
pojemnik.style.left = pozycjaX+'px';
問題是: 如何更改代碼轉換成
的onclick =回調(F,自變量)
與通過事件對象值,並有奢侈品可以在以後使用它們?
這是自己做這件事的其中一個領域(如編寫多線程隊列)非常棘手。使用庫的函數來正確地使用它,因爲有更多的人測試jQuery,而不是bug測試你的應用程序。 – 2009-11-01 22:53:47
謝謝安東尼。你的回答很有幫助。我的意思是現在它不工作,但我想,因爲基本的JavaScript沒有一個清晰和簡單的解決方案,我的問題...現在是我瞭解更多關於jQuery或其他庫的正確時間。不久之後,我將以不同的觀點回到這個問題。 – Luigi 2009-11-01 23:51:42