我试图用我自己制作一个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