2014-02-20 38 views
0

我想給每一個小區的動態id.and然後添加使用這些代碼行的addEventListener方法addEventListener方法與我是新來的addEventListener method.i想使用onClick事件對我的動態創建的js表更改單元格的值。但表消失時,我把代碼的addEventListener行function.i內動態創建的表

s.setAttribute('id',"tab"+v); 
     document.getElementById("tab"+v).addEventListeners("click",function(){var g=document.getElementById("tab"+v); 
     g.innerHTML="changed";},false); 

     v++; 

任何一個可以向我解釋,我怎麼能解決這個

<html> 
<head> 
<title>table dynamic</title> 
<style> 
*{margin:0px;padding:0px;} 

.tableShape{ 
    width:300px; 
    height:300px; 
    font-size:30px; 
    text-align:centre; 
    color:red; 
    border:1px solid red; 

} 
.rowShape{height:33%;width:33%;border:1px solid black;} 


</style> 
</head> 
<body> 
<script> 
var i,j,v=1; 
var arr=new Array(3); 
for(i=0;i<3;i++){ 
arr[i]=new Array(3); 
} 
for(i=0;i<3;i++){ 
for(j=0;j<3;j++){ 
arr[i][j]=1; 
}} 

function tabs(){ 
    var k,t; 
    var m=document.createElement("table"); 
    m.setAttribute('class',"tableShape"); 

    for(var k = 0;k < 3; k++){ 
    var p=m.insertRow(k); 
     for(var t = 0;t < 3; t++){ 
     var s=p.insertCell(t); 
     s.setAttribute('class',"rowShape"); 
     s.innerHTML+=arr[k][t]; 
    s.setAttribute('id',"tab"+v); 
     document.getElementById("tab"+v).addEventListeners("click",function(){var g=document.getElementById("tab"+v); 
     g.innerHTML="changed";},false); 

     v++; 
     } 
     } 
     document.body.appendChild(m); 
    } 


    window.onLoad=tabs(); 
</script> 
</body> 
</html> 

回答

2

你必須要意識到事實,即回調函數y當事件發生時,首先對addEventListener()作爲參數給出參數 - 因此它接受值「v」。 你需要的是五世的值的本地副本 - 你可以通過封閉做到這一點,就像這樣:

s.setAttribute('id', "tab" + v); 
document.getElementById("tab" + v).addEventListeners("click", (function(val) { 
     return function() { 
      var g = document.getElementById("tab" + val); 
      g.innerHTML = "changed"; 
     }; 
     })(v), false); 

    v++; 

你可以找到一個簡單的實例關閉位置:http://jsfiddle.net/9JAG2/

乾杯

弗洛裏安

相關問題