Я создал таблицу динамически с помощью JavaScript. Мне нужно сделать так, чтобы при выборе флажка активировалось соответствующее текстовое поле в той же строке.
Я пробовал такой код:
function toggleTextbox(checkbox) {
var row = checkbox.closest('tr');
var textbox = row.querySelector('input[type="text"]');
textbox.disabled = !checkbox.checked;
}
Но это не работает. Получаю ошибку:
Uncaught TypeError: Cannot read property ‘disabled’ of null
Как правильно связать флажки и текстовые поля в динамически созданной таблице? Буду благодарен за помощь!
привет! я тоже сталкивался с подобной проблемой. судя по ошибке, похоже что textbox не находится. попробуй использовать метод getElementsByTagName вместо querySelector. например так:
var textbox = row.getElementsByTagName(‘input’)[1];
это должно найти второй input в строке (предполагая что первый - чекбокс).
еще совет - добавь проверку на null перед изменением disabled:
if (textbox) {
textbox.disabled = !checkbox.checked;
}
так избежишь ошибки, если вдруг поле не найдется. удачи с реализацией!
Проблема скорее всего в том, что ты пытаешься получить элементы до того, как они полностью отрендерились в DOM. Попробуй обернуть свой код в setTimeout с небольшой задержкой:
Это даст время браузеру для рендеринга. Также можешь использовать MutationObserver для отслеживания изменений в DOM. Так будет надежнее работать с динамическим контентом.