2016-10-03 94 views
0

我想创建的div的名单, 的div的应该是这样的:添加onclick事件动态创建元素

<div onclick="myFunc(this, 'arrayValue')"></div> 

我想通过我的数组迭代并通过索引值来实现它我的功能。一个工作用setAttribute的解决方案:

for(var i = 0; i < array.length; i++){ 
    var div = document.createElement("div"); 
    div.setAttribute("onclick", 'myFunc(this, \''+array[i]+'\')'); 
    myDiv.appendChild(div); 
    } 

唯一的问题是,这部分看起来非常难看:\''+array[i]+'\')' 有没有其他的方式来实现这一目标?这应该是这样的或类似的东西:

div.setAttribute("onclick", myFunc(this, array[i]); 

BTW。其他解决方案:当我使用div.onclick时,onclick attr在div上不可见(结果:<div></div>),可能我做错了什么。

+0

[For循环中的onClick事件]的可能重复(http://stackoverflow.com/questions/15860683/onclick-event-in-a-for-loop) –

+0

*“......这部分看起来很真实丑陋的“*部分使它更适合于代码审查。 – 2016-10-03 12:59:54

+0

如果你显示了你实际做了什么,并且描述了什么是错误的以及你的意思是什么“* attr不可见”*,那么*“其他解决方案”但是,它几乎肯定是重复的。 – 2016-10-03 13:00:29

回答

1

var array = ['bla1','bla2']; 
 

 
var myFunc = function(value) { 
 
    alert('click : '+ value); 
 
}; 
 

 
var myDiv = document.getElementById('myDiv'); 
 

 
for(var i = 0; i < array.length; i++){ 
 
    var div = document.createElement("div"); 
 
    div.className = 'bla'; 
 
    myDiv.appendChild(div); 
 
    
 
    div.addEventListener('click', myFunc.bind(this, array[i])); 
 
}
.bla { 
 
    border: 1px solid black; 
 
    width: 20px; 
 
    height: 20px; 
 
    margin: 10px; 
 
    }
<div id="myDiv"></div>

是你想要的吗?

相关问题