• Что написать для тренировки на js с нуля?

    shmatuan
    @shmatuan
    8 year of Web, 5 years of Vue
    Из того, что часто может пригодится в вебе

    • Паралакс
    • слайдер
    • генерацию таблиц из js
    • сортировку таблиц
    • общение с сервером
    • Плеер (аудио/видео)
    • Работа со временем (momentjs)
    • Подгрузка постов при скроле
    • Движение блоков при скроле
    • Пагинация
    • Модалка
    • Взаимодействие с изображениями (фильтр, обрезка, ...)
    • Кастомные селекты, датапикеры
    • Табы


    + можешь поискать топ сайтов и попробовать повторить интересные штуки из них
    + jQuery
    + фрейморки, например Vue
    + node js
    Ответ написан
    Комментировать
  • Как написать функцию, которая создаст объект JS из таблицы HTML?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Разбейте сложную задачу на составные простые и решайте их по одной.

    Например, для начала получите не объект, а массив строк таблицы.
    spoiler
    const rowsNodeList = document.querySelectorAll("table tr");  // это еще не Array
    const rowsArray = Array.prototype.slice.call(rowsNodeList);

    Или, когда имеется в распоряжении DOM объект строки, как из него вытащить все ячейки?
    spoiler
    const rowOne = document.querySelector("table tr");
    const tdNodeList = rowOne.querySelectorAll("td"); // подумайте, как сюда же включить и все <th>
    const tdArray = Array.prototype.slice.call(tdNodeList);


    В вашем коде первая ошибка: не представляете, что хотите получить в итоге. Наверное, не объект, а массив массивов? Там же упорядоченный набор строк, в каждой строке упорядоченный набор ячеек.
    Вторая ошибка, document.querySelector('tr') всегда будет возвращать самую первую строку в самой первой таблице в документе.
    Ответ написан
    Комментировать
  • Как написать функцию, которая создаст объект JS из таблицы HTML?

    0xD34F
    @0xD34F Куратор тега JavaScript
    function getTableData(table) {
      const [ head, ...rows ] = table.querySelectorAll('tr');
      const keys = Array.from(head.cells, n => n.innerText);
    
      return rows.map(tr => keys.reduce((obj, key, i) => {
        obj[key] = tr.cells[i].innerText;
        return obj;
      }, {}));
    }
    
    
    const tableData = getTableData(document.querySelector('table'));
    Ответ написан
    Комментировать