2010-12-16 68 views
0

我是creatind 20动态div,在页面加载时将onclick事件附加到每个div以提醒其id,但问题是点击任何div只有最后div id被警告plz help。JavaScript帮助请求从onclick获取动态值

例如,在点击第一个div时警告最后一个div id。

需要的结果是在一个div上点击应该警告自己的ID。

Full code is bellow。

在此先感谢。

<html> 
<head> 
<script> 
function __createElement(tag, cls, id, name) 
{ 
var ele; 
ele = document.createElement(tag); 
if(cls!="" && cls!=undefined) 
    ele.className = cls; 
if(id != "" && id!=undefined) 
    ele.id = id; 
if(name!= "" && name!=undefined) 
    ele.name = name; 
return ele; 
} 
function test() 
{ 
for(var i = 0;i<20;i++) 
{ 
    var div = __createElement("div" ,"test" ,i+"test"); 
    document.getElementById("cont").appendChild(div); 
    div.innerHTML = "Content"+i; 
    div.onclick = function() 
    { 
    alert(i+"test"); 
    } 
} 
} 
setTimeout("test()",1000); 
</script> 
</head> 
<body> 
<div id=cont > 
</div> 
</body> 
</html> 

回答

2

这个变量关闭问题用这个来代替:

div.onclick = function (num) 
    { 
    return function(){ 
     alert(num+"test"); 
    }; 
    }(i); 
+0

谢谢..它的作品...我还发现一个解决方案div.onclick =()函数 \t \t { \t \t \t警报(this.id); \t \t} – druveen 2010-12-16 05:57:34

+0

谢谢你......你救了我的一天.......... – druveen 2010-12-16 07:56:49

+0

@druveen yourwelcome。 – 2010-12-16 08:22:37

0

我遇到过这个问题一次。请记住:在test()函数的整个范围内,i的值现在为20。但是,每个div的innerHTML值现在按照您的预期设置。所以请使用innerHTML值引用。

+0

但我需要点击div的ID,是有可能得到它.... – druveen 2010-12-16 05:47:03

+0

@druveen:引用'id'如你所说你对Scrum Meister的回答的评论就可以做到。 'alert(i)'给出'i'的当前值,它在'for'循环结尾处是'20'。但是元素属性,只要它们不是一个匿名函数,已经很难设置。 – 2010-12-16 06:19:36