Javascript 事件侦听器无法正常工作

Javascript 事件侦听器无法正常工作,javascript,jsp,Javascript,Jsp,我正在尝试向每个动态创建的img元素注册onClick事件侦听器。当我试图将参数传递给eventHandler函数时,事件会被激发,或者在页面加载时调用处理函数,之后它就不工作了,但当我不将参数传递给事件处理函数时,它工作正常 request.onreadystatechange = function() { try { if (this.response.contentlength != 0) {

我正在尝试向每个动态创建的img元素注册onClick事件侦听器。当我试图将参数传递给eventHandler函数时,事件会被激发,或者在页面加载时调用处理函数,之后它就不工作了,但当我不将参数传递给事件处理函数时,它工作正常

request.onreadystatechange = function() {
            try {
                if (this.response.contentlength != 0) {
                    var urlCreator = window.URL || window.webkitURL;
                    var imageUrl = urlCreator
                            .createObjectURL(this.response);
                    var elem = document.createElement("img");
                    elem.setAttribute("style","width:100%");
                    elem.setAttribute("src", imageUrl);
                    elem.addEventListener("click",on);
                // here elem.addEventListener("click",on(elem));
                    parent.appendChild(elem);
                }
            } catch (Exception) {
            }
        };
        request.send();
    }

    //for overlay effect
    //function on(ele){
    function on(){  
        document.getElementById("overlay").style.display="block";   
    }
request.onreadystatechange=function(){
试一试{
if(this.response.contentlength!=0){
var urlCreator=window.URL | | window.webkitURL;
var imageUrl=urlCreator
.createObjectURL(this.response);
var elem=document.createElement(“img”);
元素setAttribute(“样式”,“宽度:100%”);
elem.setAttribute(“src”,imageUrl);
//
元素addEventListener(“单击”,打开);
//这里是elem.addEventListener(“单击”,在(elem)上);
父、子(elem);
}
}捕获(例外){
}
};
request.send();
}
//用于叠加效果
//功能开启(ele){
//listener函数始终将event作为第一个参数,event包含有关从哪个元素调用此listener的信息
函数在(evt){
var targ=evt.target | | evt.src元素;
document.getElementById(“overlay”).style.display=“block”;

}
//或者,如果要传递参数,请参考下面的代码

request.onreadystatechange=function(){
试一试{
if(this.response.contentlength!=0){
var urlCreator=window.URL | | window.webkitURL;
var imageUrl=urlCreator
.createObjectURL(this.response);
var elem=document.createElement(“img”);
元素setAttribute(“样式”,“宽度:100%”);
elem.setAttribute(“src”,imageUrl);
//这里您应该传递参数。您不能直接调用侦听器函数。它必须始终使用匿名函数包装。
var yourdata=“xxxx”;
elem.addEventListener(“单击”,函数(){on(yourdata)});
//这里是elem.addEventListener(“单击”,在(elem)上);
父、子(elem);
}
}捕获(例外){
}
};
request.send();
}
//用于叠加效果
//功能开启(ele){
//listener函数始终将event作为第一个参数,event包含有关从哪个元素调用此listener的信息
函数在(evt,数据){
var targ=evt.target | | evt.src元素;
document.getElementById(“overlay”).style.display=“block”;

}
谢谢您的帮助,但是如果我想向事件处理程序函数发送一些其他信息(一些参数),该怎么办?您可以将其作为自定义属性添加到元素中,作为元素中的“data attrName=“xxxx”,并访问target.getAttribute(“data-attrName”)中的值