0

我有一个大约有 50 行的表。每行的最后一个单元格是一个图像,单击该图像我会在该特定行的每个单元格中显示文本框,以便用户可以编辑值。为此,我在单击图像时编写了一个 Javascript,我将遍历该特定行并将每个 td 的 innerHTML 更改为具有一个文本框。

function insertEdittableRow(ids){  
     var row = $(ids).closest("tr");

     var tdvar = row.find('td[class=mainServer]')[0];

      var servname = tdvar.innerHTML.trim();

      tdvar.innerHTML = "'<'INPUT id=updServerName class=TextBoxStyle value='" + servname 
                +"' type=text name=updServerName/> ";

    }

这工作正常。我想做的第二步是排序。

单击表格标题时,我正在对表格进行排序。javascript 的排序是这样的。它占用所有行,将其放入具有旧索引(行号)的数组中并进行排序。然后它遍历数组并创建一个新的排序 tbody。表中旧的未排序的 tbody 将替换为这个新的排序的。

    for(var i=0, len=arrayOfRows.length; i'<'len; i++) {
       newTableBody.appendChild(rows[arrayOfRows[i].oldIndex].cloneNode(true));
    }

    table.replaceChild(newTableBody,tbody);

这也很好用。

但问题是,现在,如第一部分所述,单击最后一个单元格中的图像按钮不起作用。我将调试器放在那个 javascript 函数中,它会在那里命中并形成文本并分配给最后一个 td 的 innerHTML,但是在页面中我看不到文本框。

总之,文本框在排序之前作为 innerHTML 插入,但是在我使用 cloneNode 进行排序后,创建了一个新的排序 tBODY 并插入到表中,innerHTML 分配不起作用。

任何帮助表示赞赏。

4

1 回答 1

0

作为一种解决方法,我在排序时停止了 cloneNode 。相反,我为行的每个单元格做了 createElement 和 appendChild 并将行 appendChild 到 tbody

于 2012-09-20T14:20:55.280 回答