Как удалить строку в Javascript? - PullRequest
0 голосов
/ 21 февраля 2012

У меня уже есть динамическое добавление / удаление строк в Javascript, проблем с добавлением строк нет, есть только проблемы с удалением строк.Пока что я сделал, когда я хочу удалить строку , она всегда удаляет последнюю , поэтому я думаю I want if it only can be deleted the selected row, и я не знаю, как изменитьсценарий к тому, что я хотел быть.

Вот сценарий:

var i=0;
function addRow()
{
 i++;
  m.r.value = i;
  var tbl = document.getElementById('table');
  var lastRow = tbl.rows.length;
  var iteration = lastRow - 1;
  var row = tbl.insertRow(lastRow);

  var cellLeft = row.insertCell(0);
  var textNode = document.createTextNode(iteration);
  cellLeft.appendChild(textNode);

  var cellRightSel1 = row.insertCell(1);
  var sel = document.createElement('select');
  sel.name = 'name' + iteration;
  sel.setAttribute("onchange", "choosec(this);");    
  var item = new Option("","");
  sel.options[sel.length] = item;
    <?
    while($data = mysql_fetch_array($result)){                                    
    ?>
  var item = new Option("<?=$data["Name"];?>","<?=$data["ID"];?>");
  sel.options[sel.length] = item;
  <? } ?>
  cellRightSel1.appendChild(sel);

  var cellRightSel2 = row.insertCell(2);
  var sel = document.createElement('select');
  sel.name = 'class' + iteration;
  sel.setAttribute("onchange", "choosepoint(this);");    
  var item = new Option ("","");
  sel.options[sel.length] = item;
    <?
    while($data = mysql_fetch_array($result_sub)){                                    
    ?>
  var item = new Option("<?=$data["Class"];?>","<?=$data["ID"];?>");
  sel.options[sel.length] = item;
  <? } ?>
  cellRightSel2.appendChild(sel);

  var cellRight = row.insertCell(3);
  var div = document.createElement('div');
  div.id = 'point' + iteration;
  cellRight.appendChild(div);
}


function removeRow(){
  var tbl = document.getElementById('table');
  var lastRow = tbl.rows.length;
  var rem = lastRow - 1;
  if (lastRow > 2) tbl.deleteRow(rem);
}

Помощь приветствуется, спасибо.

Мои решенные проблемы:

function removeRow(t){
      var i = t.parentNode.parentNode.rowIndex;
      var tbl = document.getElementById('table');
      var lastRow = tbl.rows.length;
      var iteration = lastRow - 1;
      tbl.deleteRow(i);
    }

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

попробуй вот так

<tr onclick="removeRow(this);">...</tr>

затем в методе javascript

function removeRow(row){
  var tbl = row.parentNode;
  var index = row.parentNode.rowIndex;
  if (index > 2) tbl.deleteRow(index);
}

Я нашел один хороший пример, подходящий вашему требованию. проверьте здесь

0 голосов
/ 21 февраля 2012

Это код, который необходимо изменить:

  var rem = lastRow - 1;

Прямо сейчас, это всегда будет последний ряд. Вы можете построить некоторую логику для передачи индекса или поиска строки или чего-то еще, но tbl.deleteRow () необходимо удалить по определенному индексу.

Если вы хотите удалить 3-ю строку, например:

var rem = 2; //zero-based index
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...