Вопрос по javascript – Удаление динамических элементов и изменение порядка их значений и идентификаторов

0

У меня есть функция, которая создает элемент DOM onClick. Этот элемент содержит входы сarray names.

В начале яalready have one элемент (такой же, как те, которые я создаю onClick).

<tbody id="elementsBody">

<tr id="element1"> // 1 becomes 2 and so on when new element is added
  <td>
    <input type="hidden" name="numbers[]" value="1" /> // 1 becomes 2 and so on when new element is added
  </td>
  <td>
    <input type="text" name="titles[]" />
  </td>
</tr>

// Newly created Elements goes in here!!!

</tbody>

Это моя функция, которая создает больше элементов, подобных приведенному выше.

А такжеcreates a Delete Button DIV для этого вновь созданного элемента.

function addElement() {
  var elementsBody = document.getElementById('elementsBody');

  var numbers = document.forms[1].elements['numbers[]'];
  var number = numbers.length+1;

  if (isNaN(number)) {
    var number = 2;
  }

  var numberInput = '<td><input type="hidden" name="numbers[]" value="'+ number + '" /></td>';
  var titleTd = '<td><input type="text" name="titles[]" /></td>';

  // This is the Delete Button DIV
  // I want to create a function (deleteElement) which Removes This Element
  var deleteButton = '<td><div onClick="deleteElement('+ number + ')">Delete Element</div></td>';

  elementsBody.insertAdjacentHTML('beforeend', '<tr id="element' + number + '">' + numberInput + titleTd + deleteButton + '</tr>');
}

I want to create a function (deleteElement) which Removes this Added Element по щелчку.

После удаления элемента я хочу, чтобы эта функцияreorder all the elements values and ID's, Например, если я удаляю Элемент № 2, значение и идентификатор третьего Элемента должны стать 2.

Не JQuery.

Пожалуйста, помогите мне с этим!

insertAdjacentHTML великолепен Hypn0tizeR
Что ты пробовал? С чем конкретно вам нужна помощь? Получение ссылки на элементы? Удалить элементы, когда у вас есть ссылка? Что-то другое? (Я не знал оinsertAdjacentHTML, но это действительно существует). Felix Kling
@ FelixKling, что-то в этом роде! А также перенумеровать все остальные элементы. Hypn0tizeR
Думаю, не jQuery, @Felix; -) Arjan

Ваш Ответ

2   ответа
1

ца. Удалить цель из массива Renumber в массиве Затем добавить то, что осталось. Если бы это был я, я бы хотел иметь другой ElementID (DisplayElmentID?), Тогда вам не пришлось бы делать все это. то есть оставить идентификатор, используемый DOM, черт побери

Вопрос в том, как? : / Hypn0tizeR
@ Esailija, он уже помог мне с кодом! Спасибо ему Hypn0tizeR
0

Скрипка):

function addElement() {
  var elementsBody = document.getElementById('elementsBody');

  var numberInput = '<td><input type="hidden" name="numbers[]" value="" /></td>';
  var titleTd = '<td><input type="text" name="titles[]" /></td>';
  var deleteButton = '<td><div onClick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode); update();">Delete Element</div></td>';

  elementsBody.insertAdjacentHTML('beforeend', '<tr>' + numberInput + titleTd + deleteButton + '</tr>');
  update();


}

function update() {
  var inputs = document.getElementById('elementsBody').querySelectorAll("input[type='text']");
  [].forEach.call(inputs, function(input, index) {

    input.value = index + 1;
  });
}
<table>
  <tbody id="elementsBody">

    <tr>
      <td>
        <input type="hidden" name="numbers[]" value="1" />
      </td>
      <td>
        <input type="text" name="titles[]" />
      </td>
    </tr>



  </tbody>
</table><button onclick="addElement();">add</button>

Похожие вопросы