2016-10-03 95 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>

是你想要的嗎?

相關問題