Получение «removeAttr не является функцией» при попытке изменить идентификаторы скопированных строк в таблице с помощью jquery - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь скопировать строки из одного HTML table в другой. В моем случае домашний адрес строки для биллинга адресных строк. Мне нужно скопировать все элементы HTML tr (с дочерними элементами), чтобы обеспечить совпадение количества полей (я могу добавить дополнительные поля адреса как пользователь). поэтому просто значений недостаточно.

Я успешно клонировал исходные данные tr s, успешно обновил класс tr с homeStreet до billingStreet, могу вставить новый tr строк в порядке, но как обновить идентификаторы отдельных полей ввода с input#home-street-1 до input#billing-street-1. У каждого тр есть один td с input кстати.

Я застреваю и получаю разные ошибки. В конечном итоге я хотел бы заполнить 1-5 полей (ID home-street-n с n от 1 до 5), но сначала я согласился бы на 1, то есть изменил table#billing input#home-address-1 на input#billing-street-2 в новом table#billing HTML таблица

Мой код

  $('tr.billingStreet').remove();           // Start by removing previous fields.
  const homeStreets = $('tr.homeStreet').clone();
  const billingStreets = homeStreets.removeClass('homeStreet').addClass('billingStreet');
  const billingStreet1 = billingStreets[0]
  billingStreet1.removeAttr('id');          // <-- Error "billingStreet1.removeAttr is not a function"
  billingStreet1.attr('id','billing-street-1');

  // this part works to paste the row
  const beforeRow = $('tr#sameAs');
  beforeRow.after(billingStreet1);

Ошибка:

Uncaught TypeError: billingStreet1.removeAttr is not a function

Добавление console.log('billingStreets) дает

k.fn.init(2) [tr.billingStreet, tr.billingStreet, prevObject: k.fn.init(2)]
0: tr.billingStreet
1: tr.billingStreet

, показывая добавленный класс на новые tr

1032 *enter image description here

1 Ответ

0 голосов
/ 03 февраля 2020

Почему вы удаляете атрибут, если в следующей строке вы его перезаписываете?

Удаляет строку:

 billingStreet1.removeAttr('id');

вам это не нужно.

...