• Что написать для тренировки на 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
    const getTableData = ({ rows: [ head, ...rows ] }) =>
      rows.map(function({ cells: c }) {
        return this.reduce((obj, key, i) => (
          obj[key] = c[i].innerText,
          obj
        ), {});
      }, Array.from(head.cells, n => n.innerText));
    
    
    const tableData = getTableData(document.querySelector('table'));
    Ответ написан
    Комментировать