我設法解決了一些使用JavaScript僅使用JavaScript遍歷錶行的問題,但遇到了2個障礙。我正在嘗試創建一個表格,其中每行都有一組按鈕來移動該特定行,然後將其移除或刪除。我能夠成功地使用.replaceChild方法,但它取代了行而不是僅僅交換它們。當我嘗試.moveRow時,我不斷收到一個錯誤,說HTML表格部分沒有這個方法。嘗試將當前行與下面的行交換時遇到同樣的問題。有什麼建議麼?使用DOM遍歷表的問題
function up(x){
// var tableBody = document.getElementsByTagName("tbody")[0]; // tried it with tableBody and it still didn't work
var table = x.parentNode.parentNode.parentNode;
var tableRow = x.parentNode.parentNode.cloneNode(true);
var previousRow = x.parentNode.parentNode.previousSibling.cloneNode(true);
table.replaceChild(tableRow,x.parentNode.parentNode.previousSibling);
}
function down(x){
var table = x.parentNode.parentNode.parentNode;
var tableRow = x.parentNote.parentNode.cloneNode(true);
var belowRow = x.parentNode.parentNode.nextSibling.cloneNode(true);
table.moveRow(tableRow,x.parentNode.parentNode.nextSibling);
}
我的按鈕:
<table id="table1" border="1">
<tbody>
<tr>
<th>Column 1</th> <th>Column 2</th> <th>Column 3</th> <th>Column 4</th>
</tr>
<tr id="enterData">
<td id="buttons">
<input type="button" value="Up" onclick="up(this)" />
<input type="button" value="Down" onclick="down(this)" />
</td>
</tr>
</tbody>
</table>
你嘗試['insertBefore'(https://developer.mozilla.org/en-US/docs/DOM/Node.insertBefore)?你爲什麼要克隆行,你不想只用這些函數移動它們嗎? – bfavaretto 2013-02-15 00:23:56
讓我們看看這個鏈接http://help.dottoro.com/ljuikjpk.php,moveRow似乎不是跨瀏覽器。順便說一句,嘗試'幹'你的代碼,避免每次調用,x.parentNode.parentNode。它會更清晰地爲你 – Newben 2013-02-15 00:42:26
@bfavaretto:我沒有嘗試insertBefore,雖然現在我看它,我認爲它會解決我的問題。我克隆了行,因爲我想複製該行的值,並且不確定這樣做是否會起作用。 – 2013-02-15 02:09:06