为何对创建的对像添加事件无效呢?

qfljm 2005-05-27 04:57:05
<BODY bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
<script language="javascript" type="text/JavaScript">
var Data = new Array();
Data[0] = [0, 'aaa'];
Data[1] = [1, 'bbb'];
Data[2] = [2, 'ccc'];
for(var i=0; i<Data.length; i++){
var DIV = document.createElement('div');
DIV.style.cssText = 'width:80px; height:18px; border:1px #7d7d7d solid;';
DIV.innerText= Data[i][1];
DIV.onclick=function(){alert(Data[i][0])}
document.body.insertAdjacentElement('beforeEnd', DIV);
}
</script>
</BODY>
</HTML>
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
seeu1688 2005-05-28
  • 打赏
  • 举报
回复
也可以用
DIV.attachEvent("onclick", new Function("alert(" + Data[i][0] + ")"));

不是你添加的onclick事件无效,而是函数里的语法是要到函数执行时才解析的,这时候你的
Data[i][0]里的i就变成未有定义了,于是解析出错.

用new Function语法,可以让函数里的Data[i][0]在函数定义时就解析,于是函数执行时Data[i][0]已变成实际值了,于是有效.

new Function语法可参看微软的脚本手册
qfljm 2005-05-28
  • 打赏
  • 举报
回复
能解释下
new Function
吗?
seabell 2005-05-27
  • 打赏
  • 举报
回复
<BODY bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
<script language="javascript" type="text/JavaScript">
var Data = new Array();
Data[0] = [0, 'aaa'];
Data[1] = [1, 'bbb'];
Data[2] = [2, 'ccc'];

for(var i=0; i<Data.length; i++){
var DIV = document.createElement('div');
DIV.style.cssText = 'width:80px; height:18px; border:1px #7d7d7d solid;';
DIV.innerText= Data[i][1];
DIV.onclick=new Function("alert("+Data[i][0]+")");
document.body.insertAdjacentElement('beforeEnd', DIV);
}
</script>
</BODY>
</HTML>
seabell 2005-05-27
  • 打赏
  • 举报
回复
<BODY bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
<script language="javascript" type="text/JavaScript">
var Data = new Array();
Data[0] = [0, 'aaa'];
Data[1] = [1, 'bbb'];
Data[2] = [2, 'ccc'];

for(var i=0; i<Data.length; i++){
var DIV = document.createElement('div');
DIV.style.cssText = 'width:80px; height:18px; border:1px #7d7d7d solid;';
DIV.innerText= Data[i][1];
DIV.i= Data[i][0];
DIV.onclick=function(){alert(this.i)};
document.body.insertAdjacentElement('beforeEnd', DIV);
}
</script>
</BODY>
</HTML>
qfljm 2005-05-27
  • 打赏
  • 举报
回复
为何我为DIV添加的onclick事件无效呢?

87,908

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧