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