我动态的生成一个表格代码如下:
这样动态可以实现点击其中的一行响应selectRows事件,但是我如果删去中间的一行,怎么能够把他的 selectRows事件也改变了呢?高手请指教一下
var table = document.getElementById("tzConditionTable");//取得table  
 var  oTBody =  document.getElementById("tzConditionTBody")
var oTr = document.createElement("tr");
 var oTr = document.createElement("tr");
        if(index != 1) 
        {
            index =  oTBody.rows.length +1;
        }
        
        if (window.attachEvent)
        {
            //IE 的事件代码
            oTr.attachEvent("onclick", function(){selectRow(index-1)});
        }
        else
        {
            //其它浏览器的事件代码
            oTr.addEventListener("click",function(){selectRow(index-1)},false); 
        }         / 中间td部分省略
          oTr.appendChild(oTd);
        
        oTBody.appendChild(oTr);
        if(tbodyFlg == false)
        {
            table.appendChild(oTBody);
        }  

解决方案 »

  1.   

    你说的意思就是
    每行里面有selectRows事件,如果删除的话 就把该行的selectRows事件删除就oK 了
    那么每行你个一个ID 不就可以了了吗 个人理解
      

  2.   

    事件重写而已
    xxxx.onclick=function(...){...}
      

  3.   

    oTr.onclick = function(){selectRow(i)}; 这是我重写的事件 但是不好用
      

  4.   

    参考下:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    body {
    font-family: Verdana, Geneva, sans-serif;
    font-size: 12px;
    margin: 0px;
    padding: 0px;
    }

    table {
    font-size: 12px;
    font-family: Verdana, Geneva, sans-serif
    }

    td {
    text-align: center;
    background: #FFF
    }

    tr {
    height: 20px;
    }

    th {
    background: #9DACBF;
    color: #FFF;
    height: 20px;
    line-height: 20px
    }

    a {
    color: #99C;
    }

    a:hover {
    color: #F93
    }

    .input td {
    padding: 2px
    }

    .input input {
    width: 100%;
    border: 1px solid #000;
    overflow: hidden
    }
    </style>
    <script type="text/javascript">
    //简化document.getElementById()方法
    function $(obj) {
      return document.getElementById(obj);
    }
    //插入行
    function insRow() {
        var targetTable = $("nw");
        var lastRow = getTBody(targetTable).appendChild(targetTable.rows[1].cloneNode(true)); //插入行方法
        clearTextBox(lastRow);

        var newCell3 = lastRow.cells[2];
        newCell3.innerHTML = '<a href="#">删除</a>';
        newCell3.onclick = delRow;
    }
    //删除行
    function delRow() {
        var targetTable = $("nw");
        targetTable.deleteRow(this.parentNode.rowIndex);
    }
    function getTBody(table) {
        for (var i=0; i<table.childNodes.length; i++) {
            if (table.childNodes[i].nodeType == 1
                && table.childNodes[i].tagName.toLowerCase()=="tbody")
                return table.childNodes[i];
        }
    }
    function clearTextBox(target) {
        var allInputs = target.getElementsByTagName("input");
        var ipt;
        for (var i=0; i<allInputs.length; i++) {
            ipt = allInputs[i];
            if (ipt.type.toLowerCase()=="text") {
                ipt.value = "";
            }
        }
    }
    </script>
    <title>Javascript控制表格 实现动态添加和删除表格内容</title>
    </head>
    <body>
    <table id="nw" cellpadding="0" cellspacing="1" border="0" width="320" bgcolor="#CCCC99">
    <th>编号</th>
    <th>名称</th>
    <th>操作</th>
    <tr class="input">
    <td><input type="text" id="name" /></td>
    <td><input type="text" id="add" /></td>
    <td style="width: 52px"><input type="button" value="添 加" class="btn" onClick="insRow()" /></td>
    </tr>
    </table>
    </body>
    </html>
      

  5.   

    看了你的内容,建议你使用 jQuery库
    jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。<body>
      <div class="clickme">Click here</div>
    </body>可以给这个元素绑定一个简单的click事件: 
    $('.clickme').bind('click', function() {
      alert("Bound handler called.");
    });当点击了元素,就会弹出一个警告框。然后,想象一下这之后有另一个元素添加进来了。 
    $('body').append('<div class="clickme">Another target</div>');
    尽管这个新的元素也能够匹配选择器 ".clickme" ,但是由于这个元素是在调用 .bind() 之后添加的,所以点击这个元素不会有任何效果。 .live() 就提供了对应这种情况的方法。如果我们是这样绑定click事件的: 
    $('.clickme').live('click', function() {
      alert("Live handler called."); 
    });
    然后再添加一个新元素: 
    $('body').append('<div class="clickme">Another target</div>');
    然后再点击新增的元素,他依然能够触发事件处理函数。 
      

  6.   


    oTr.attachEvent( "onclick", function(){ selectRow(this.rowIndex); } );