Задание 2: 1. Атрибуты onclick, input нужно заменить на addEventListner; 2. Вместо навешивания eventListner'ов на каждый нужный тебе элемент нужно повесить один обработчик на родителя (например, на Body или HTML) и всю логику размести в нем. Т.к. родитель будет получать все события своих потомков, то тебе нужно будет проверить, на том ли элементе оно было создано. Для этого используй element.matches("selector"); 3. Преобразовать File в строку можно используя await.file.text(), без создания FileReader. Функцию при этом нужно сделать async; 4. let и var нужно поменять на const; 5. Нужно добавить возможность вставки строки в начало и конец таблицы. Для этого: нужно написать функцию, которая высчитывает текущее количество ячеек в таблице(число td у tr), при вставке необходимо получить количество ячеек и вставить их в созданную строку, затем эту строку вставить в таблицу. Без использования innerHTML. Рекомендую использовать метод replaceWith, т.е. для вставки node после row тебе нужно написать row.replaceWith(row, node). Вместо querySelectorAll для поиска элементов таблицы использую table.tbodies[0].rows[0].cells[0] (с нужным тебе индексом); 6. Добавить переключатель режима удаления, для этого: создай переключатель состояния на странице, при клике на строку и при включенном переключателе необходимо её удалит из таблицы; 7. Дополнительное задание: добавить возможность загрузить таблицу как JSON или CSV (формат можешь использовать любой, можно просто анолагично HTML, т.е. массив из строк таблицы, каждая из которых хранит массив из ячеек таблицы); 8. Дополнительное задание: Добавить визуал при помощи CSS. Рекомендую использовать библиотеки компонентов, например, Bootstrap, Materialize, Pure, Bulma или любой другой на твой выбор;