2011-12-14 30 views
3

是否可以用javascript或jQuery替換表格單元而不刪除它?例如,如果我有一個有多行的表格,每行有5個單元格,我可以通過賦值來更改第一行的第一個單元格,而不是刪除單元格,然後插入一個新單元格?是否可以用javascript或jQuery替換表格單元而不刪除它?

EDIT(簡體):

<table> 
    <tr id="currentRowId1" name="currentRowId1"> 
     <td style="text-align:center"> 
     </td> 
     <td style="text-align:center"> 
     </td> 
     <td style="text-align:center"> 
      <input type="submit" onclick="changeOrder()" /> 
     </td> 
     <td style="text-align:center"> 
     </td> 
     <td> 
     </td> 
    </tr> 
    <tr id="currentRowId2" name="currentRowId2"> 
     <td style="text-align:center"> 
     </td> 
     <td style="text-align:center"> 
     </td> 
     <td style="text-align:center"> 
      <input type="submit" onclick="changeOrder()" /> 
     </td> 
     <td style="text-align:center"> 
     </td> 
     <td> 
     </td> 
    </tr> 
</table> 

JS

function changeOrder(){ 
var row = document.getElementById("currentRowId1"); 
var otherRow = document.getElementById("currentRowId2"); 
row.cells[0] = otherRow.cells[0]; 
} 
+2

是的!我們可能會*。你想做什麼?給我們一些關於你的用例的想法,以及你已經嘗試過的。也許一個[JS小提琴演示](http://jsfiddle.net/),以幫助我們看看你的工作?發佈你的HTML/JavaScript ...幫助*我們*來幫助你**。 – 2011-12-14 23:49:04

+0

用示例編輯 – 2011-12-14 23:55:55

回答

3

目前實際上可以沒有必要在這裏與innerHTML一起工作。你可以取代這樣的兩個要素:

var 
    a = document.getElementById('currentRowId1').cells[0], 
    e = document.getElementById('currentRowId2').cells[0], 
    e1 = e.nextSibling; 

a.parentNode.replaceChild(e, a); 
e1.parentNode.insertBefore(a, e1); 

演示:http://jsfiddle.net/X4zzb/1/

0

如果你只是想改變你可以使用它裏面什麼..

document.getElementById('nameofyourcell').innerHTML = 'content'; 
+0

謝謝,這是行得通的,但是我希望保留屬性。 – 2011-12-15 00:03:18

+0

夠公平的。看起來你在上面找到了解決方案,但是,另一種可能是隱藏和顯示元素。 – Wez 2011-12-15 22:52:24

1

有多種方式做這個。您可以將單元格的內部html設置爲fabianhjr指出的內容。您也可以在javascript/jquery中構建一個新元素,並使用jquery's replaceWith()方法。

您可以使用其他jQuery方法,將取代細胞,clone()before()after()我知道這是不是你問什麼,只是指出其他選項。

例子#1:

var me = $("#cellId"); 
var newHtml = $("<div>blah blah blah</div>"); 
me.replaceWith(newHtml); 

例2:

var me = $("#cellId"); 
var clone = me.clone(); 
// do some cool things with the clone change html whatever 
me.replaceWith(clone); 
+0

我希望避免必須刪除表格單元格,如果我之前或之後使用了這些表格單元格,將會需要這些表格單元格。我不是想要製造出多個相同的單元。如果我使用clone(),那麼我會如何用克隆替換當前的單元格? – 2011-12-15 00:02:37

0

你不能只分配單元等於別的東西就像你在這一行嘗試:

row.cells[0] = otherRow.cells[0]; // doesn't work 

但是,一旦你有一個單元格的引用,你可以改變它裏面的內容,例如,複製一個單元格的內容t o另一個:

row.cells[0].innerHTML = otherRow.cells[0].innerHTML; 

您還可以通過引用單元格創建,修改或刪除單元格的子元素。

如果您正在使用jQuery也有一定數量的實現同樣的事情,例如使用的方法,以下是相當於上面(但效率較低):

$(row.cells[0]).html($(otherRow.cells[0].html()); 
相關問題