我有一個帶有文本輸入的表格式結構,其中我試圖將整行與所有子項一起刪除,但首先將單元格的值逐個向上傳遞 在下面的行中保留ID編號結構。JavaScript中循環的奇怪行爲
表結構是這樣的:
<table cellpadding=0>
<tr id="myRow1">
<td id="#R1C1">
<input class="myCell">
</td>
<td id="#R1C2">
<input class="myCell">
</td>
<td id="#R1C3">
<input class="myCell">
</td>
<td id="#R1C4">
<input class="myCell">
</td>
</tr>
<tr id="myRow2">
<td id="#R2C1">
<input class="myCell">
</td>
<td id="#R2C2">
<input class="myCell">
</td>
<td id="#R2C3">
<input class="myCell">
</td>
<td id="#R2C4">
<input class="myCell">
</td>
</tr>
<!-- ...and so on. -->
</table>
有了這個表,當觸發一些事件,我有這樣的代碼運行:
var rows = 1; // This value is updated when adding/removing a line
//This code runs from any <tr> by event keyup
if (event.altKey) { // I define here all Alt+someKey actions.
// Getting position values
var currentId = $(this).attr('id');
var row = Number(currentId.split('C')[0].substring(1));
var column = Number(currentId.split('C')[1]);
var belowVal;
if (event.which == 66) { //Case Ctrl+B
// If not the last row, start looping
if (rows > row) {
var diff = rows - row;
// Iteration over rows below
for (var i = 0; i < diff; i++) {
// Iteration over each column
for (var c = 1; c <= 4; c++) {
// here I try to get the value from column below
belowVal = $('#R'+(row+1+i).toString() +
'C'+c.toString()).val();
$('#R'+(row+i).toString()+'C' +
c.toString()).find('.myCell').val(belowVal);
}
}
}
$('#myRow'+rows.toString()).empty();
$('#myRow'+rows.toString()).remove();
rows--;
}
}
它工作正常除去最後一排,但是,當試圖刪除上一行時,當前行和下面的行的值變爲空白而不是向上移動。我爲下面的每一行創建了這段代碼,將它的值傳遞給上一行,但它沒有做我想做的。
這是爲什麼發生?我想不起來。
也許你只是不應該使用這樣一個id結構?這似乎很無用。大概是 – Bergi 2014-09-10 19:39:43
。這是一個簡單的例子。網絡應用程序有更多的功能,這只是其中之一。我需要IDs結構來使函數能夠通過箭頭鍵和其他東西移動。 – SebasSBM 2014-09-10 19:41:15
我的意思是我不認爲你需要他們。有比IDS更容易識別表格單元格的方法,這種方法不需要跟蹤和更新任何屬性。 – Bergi 2014-09-10 19:47:40