Проблема:
Проблемы, с которыми вы сталкиваетесь, связаны с тем, что вы пытаетесь получить свойство childNodes элемента html.Чтобы получить доступ к этому свойству, вам нужно будет привести элемент к объекту jQuery, добавив вокруг него '$ ()'.В этом случае это будет $ (строка).
Однако, если вы сделаете это со своим кодом, вы все равно получите ошибки из-за путаницы вложенных .childNodes [0].Вы можете заставить его работать, используя этот существующий код, однако ...
Предлагаемый рефакторинг:
... Как уже говорилось, есть более изящные способы приблизиться к этомупроблема.Есть несколько способов, которыми вы могли бы заняться этим, но, учитывая ваш текущий html, я бы перестроил что-то вроде этого:
//...
// to be run when a row is deleted...this assigns ids to input elements in serial manner
$('#mytab1 tbody tr').each(function() {
var rowNum = $(this)[0].rowIndex;
var formcheck = $(this).find('.form-check');
formcheck.find('.form-check-input')[0].id = 'social_rec' + rowNum;
formcheck.find('.form-check-label')[0].for = 'social_rec' + rowNum;
formcheck.find('.form-check-label')[0].innerHTML = ' ' + rowNum;
var formName = $(this).find('td')[0];
$(formName).find('label')[0].for = 'social_rec' + rowNum;
$(formName).find('input')[0].list = 'social_rec' + rowNum;
$(formName).find('datalist')[0].id = 'social_rec' + rowNum;
var formUrl = $(this).find('td')[1];
$(formUrl).find('textarea')[0].id = 'social_rec' + rowNum;
});
//...
Это заменит ваш цикл for на цикл jquery .each, а затем использует .find.() функция для зацикливания каждого элемента управления, которым вы хотите манипулировать.Вы также заметите, что она использует функцию rowIndex () для определения того, какой номер назначать строке.
Я думаю, что преимущество такого подхода в том, что намного проще читать код и определятькакие элементы управления затрагиваются.Вы также можете дополнительно реорганизовать свой html, чтобы использовать классы, которые являются уникальными для элементов управления, на которые вы хотите настроить таргетинг, затем вы можете просто использовать селектор классов, чтобы изменить эти элементы управления.
Надеюсь, это поможет!