2012-02-02 60 views
0
function addRow(names,count) { 

    deleteRow(); 
    var table = dataTable; 

    for(var i=0;i<count;i++) 
    { 

     var rowCount = table.rows.length; 
     var row = table.insertRow(rowCount); 

     var cell2 = row.insertCell(0); 
     cell2.innerHTML = rowCount; 

     var cell3 = row.insertCell(1); 
     var element2 = document.createElement('tr'); 
     var element3 = document.createElement('td'); 
     //element2.type = "text"; 
     element2.appendChild(element3) 
     cell3.appendChild(element2); 
     cell3.innerHTML = names[i]; 
     element3.attachEvent("test()", onclick); 

    } 
} 

,这是我的代码示例,我无法把事件要么在element2或元素3, 任何人可以帮助我,什么这个无力的attachEvent给行使用DOM

问题这是我试用过的一个样本,它包含完整的代码。

<HTML> 
<HEAD> 
    <TITLE> Add/Remove dynamic rows in HTML table </TITLE> 
    <SCRIPT language="javascript"> 
     function addRow(tableID) { 

      var table = document.getElementById(tableID); 

      var rowCount = table.rows.length; 
      var row = table.insertRow(rowCount); 

      var cell1 = row.insertCell(0); 
      var element1 = document.createElement("input"); 
      element1.type = "checkbox"; 
      cell1.appendChild(element1); 

      var cell2 = row.insertCell(1); 
      cell2.innerHTML = rowCount + 1; 

      var cell3 = row.insertCell(2); 
      var element2 = document.createElement("input"); 
      element2.type = "text"; 
      cell3.appendChild(element2); 
      element2.attachEvent("onclick",function(){ alert("event triggered"); }); 


     } 

     function deleteRow(tableID) { 
      try { 
      var table = document.getElementById(tableID); 
      var rowCount = table.rows.length; 

      for(var i=0; i<rowCount; i++) { 
       var row = table.rows[i]; 
       var chkbox = row.cells[0].childNodes[0]; 
       if(null != chkbox && true == chkbox.checked) { 
        var index = table.rowIndex; 
        alert("index"+index); 
        //table.deleteRow(i); 
        //rowCount--; 
        i--; 
       } 

      } 
      }catch(e) { 
       alert(e); 
      } 
     } 

    </SCRIPT> 
</HEAD> 
<BODY> 

    <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" /> 

    <INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" /> 

    <TABLE id="dataTable" width="350px" border="1"> 
     <TR> 
      <TD><INPUT type="checkbox" name="chk"/></TD> 
      <TD> 1 </TD> 
      <TD> <INPUT type="text" /> </TD> 
     </TR> 
    </TABLE> 

</BODY> 
</HTML> 
+0

我们将需要更多的信息。你有更多的脚本或HTML向我们展示?就目前而言,'deleteRow()'和'dataTable'未定义。 – Tim 2012-02-02 05:36:54

+0

deleteRow不包含任何html,并且var table = dataTable;提取桌面 – nithin 2012-02-02 05:39:53

+0

在哪个浏览器中测试过它? – AmGates 2012-02-02 05:42:36

回答

1

逻辑和语法错误,继承人故障。

cell3.appendChild(element2); // appends your element 
cell3.innerHTML = names[i]; // deletes element2 and replaces it with names[i] 

element2不存在,因为你设置里面cell3一切是names[i]你附加element2后。

您还需要更新事件绑定(IE)

element3.attachEvent("onclick", function(){ /* code */ }); 
+0

好吧,但如果我不使用这种方式,我不能打印行内的价值 – nithin 2012-02-02 06:40:35

+0

我猜你想在TD单元格中的值,因为它的无效标记将文本放在内部和外部​​试试这个:'element3.innerHTML = names [i]' – 2012-02-02 06:42:57

+0

ya我想要一个td内的值,但是这个值不会显示,如果这样使用的话 – nithin 2012-02-02 07:26:38

0

试试这个..

element3.onclick = function() { 
       test(); 
      } 
+0

this也没有工作 – nithin 2012-02-02 06:07:30

+0

当你尝试这种情况会发生什么.. ?? – Neelam 2012-02-02 08:27:07

+0

element3.addEventListener('onclick',function(e){ // your code },false); – Neelam 2012-02-02 08:28:43