• Стоит ли изучать Javascript до HTML и CSS?

    lastuniverse
    @lastuniverse
    Пётр Грибанов, бэкенд может отдавать просто данные по http или ws в виде json. Это может быть микросервис, работающий опять же только с даными. Вариантов где есть бэкенд но нет html и css множество, так что не притягивайте за уши.
  • Стоит ли изучать Javascript до HTML и CSS?

    lastuniverse
    @lastuniverse
    То есть если я изучив js захочу писать на нем бэкенды или вообще консольные утилиты мне надо знать html и css? Вы наверное шутите?
  • Как лучше сделать таблицу с данными?

    lastuniverse
    @lastuniverse
    Если столь простой вопрос вгоняет вас в ступор, то известные мне готовые решения покажутся вам инопланетным космическим кораблем без инструкции по эксплуатации.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, да нет минусов у локалсторадж, он на ура выполняет задачу для которой предназначен. Но если мы хотим от него чегото большего, то должны позаботится о том, чтобы обойти некоторые технические ограничения (можно хранить только строки, поэтому мы преобразуем массив объектов в строку) и логические ограничения (в случае 2х и более вкладок, мы должны позаботится об адекватных механизмах сверки состояний и синхронизации)
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, прчему нет. Код как код)
    Только Item в коде выше ничего не делает кроме запомания переданных параметров.
    function Item(id, p) {
            this.id = id;
            this.p = p;
            console.log(this.p = p);
    }


    Присваивание this.p = p внутри console.log(this.p = p); не имеет смысла. Вы уже его сделали строчкой ранее. Замените на

    console.log(this.p);

    Вот эта строка вообще бессмысленна
    let item = cart.push();
    Так как метод push предназначен для вставки элемента в массив,
    Вы ыидимо хотите достать из массива, но перепутали название метода.
    Для того чтобы достать значения есть методы:
    Array.pop() // вынуть из массива последний элемент
    Array.unshift() // вынуть из массива первый элемент.

    Оба метода иизменяют сам массив, забирая из него элемент.

    Вызов функции Item(id, p); тоже не имеет смысла. Данная функция просто запоминает переданные ей параметры в своей внутренней области видимости, но никак их в дальнейшем не использует.

    Таким образом, код по факту не рабочий, но исправить его несложно, главное понять какого результата вы хотите от этого кода.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, и еще 1 момент, если открыть страницу с чекбоксами в 2х вкладках, и работать попеременно в обоих, можно нарватся на рассинхронизацию состояния между вкладками и локалстораджем.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, с одной стороны в коде вроде почти нет ничего лишнего, но с другой, обращения в локалсторадж как на чтение так и на запись происходять в нескольких местах (в 4х если мне не ищменяет память) при этом по минимуму достаточно 1 операции на запись и одной на чтение. Это несколько запутывает логику синхронизации хранилища и состояния приложения. Когда ковырял этот код с целью засунуть вместо id объект с данными, периодически в массиве оказывалась в дополнение к внесенным объектам простая строка с id, так и не смог найти откуда она там берется. Правда искал нк долго)
    Как уже написал, завтра вечером кину свой вариант работы с локалсторадж.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, можно идти разными путями. Например можно запилить класс для работы с локалсторадж, который будет иметь несложный api для работы с данными и автоматически сохранять изменения в хранилище, добавить в него шину событий, которая позволит вешать обработчики на события изменения данных в хранилище. Можно запилить отдельный класс или набор функций, для работы конкретно с чекбоксами. Можно вообще создавать объект напрямую. Например так:
    var data = {
       id: id,
       p: p
    }

    Подходов множество, вопрос лишь в их целесообразности при решении конкретной задачи. Ваш код, тот который не для примера смешивает в одну кучу сами данные, логику их сохранения/извлечения, логику их обработки. Это сильно затрудняет понимание кода и ведет к сложноотлавливаемым ошибкам.

    Я до завтрашнего вечечера буду только на телефоне, поэтому с кодом поработать толком не смогу. Завтра вечером попробую накидать решение аашей задачи так как его вижу я, с комментариями и пояснениями.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, получилось открыть (иногда телефон не корректно отобрадает и не могу переключиться на вкладку js)

    И так, открыл, смотрю и не понимаю вот это

    this.p = p;
            console.log(this.p = p);


    Для чего тут console.log(this.p = p); присваивание

    А также зачем вы создаете класс Item, так конечно можно, ео в чем смысл?
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, не могу посмотреть код с телефона. Буду дома только завтра ближе к ночи. Либо кинте код в теге code.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, не за что.

    по поводу:

    0: {
     id: check-option-1,
     image: 'тут хранить путь к картинке - [src="тут какая-та картинка"]',
     text: 1 1.1
     link: 'тут хранить атрибут ссылки - [href="тут какая-та ссылка"]'
    },


    я бы сделал как то так:
    "check-option-1": {
     image: 'тут хранить путь к картинке - [src="тут какая-та картинка"]',
     text: 1 1.1
     link: 'тут хранить атрибут ссылки - [href="тут какая-та ссылка"]'
    },


    или так:
    0: {
     id: check-option-1,
     list: {
      image: 'тут хранить путь к картинке - [src="тут какая-та картинка"]',
      text: 1 1.1
      link: 'тут хранить атрибут ссылки - [href="тут какая-та ссылка"]'
     }
    },


    это позволит упростить логику в цикле
    function updateModal(list) {
        for let key in obj {
           // тут теперь не надо делать проверку на тип ключа (id или tag)
        }  
    }
  • С чего начать изучение c#?

    lastuniverse
    @lastuniverse
    kottolic, для начала разработайте имитационную математическую модель андронного коллайдера, если справитесь, то вторым проектом делайте клон марио)
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, не обязательно, вы можете придумать свой формат на основе json с учетом вложенности. Например хранить както так

    [
      {
        id: "blablabla",
        list: [
           {
               type: "p",
               class: "classname1",
               list: [
                   {
                       type: "text",
                       text: "2.1"
                   },
                   {
                       type: "img",
                       class: "какойто класс",
                       src: "/blabla.ru/picture.img"
                   }
               ]
           }
        ]
      },
      {
        id: ......
      },
      ...
    ]


    Или оюбым другим способом, который можно хранить как текст
  • Можно ли из линукса сделать npm install пакетов для Windows платформы?

    lastuniverse
    @lastuniverse
    первое что приходит на ум, это установить win версию nodejs под wine и далее устанавливать пакеты уже с помощью npm идущей с ней в комплекте.

    делать это как то так: wine npm install

    PS: но перед использованием желательно проверьте, какой именно npm вызывается командой wine npm.
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus, вы можете вообще див и его содержимое засовывать в объект целиком.

    function addToList(elem) {
        let wrapper = elem.closest(groupWrapperSelector);
        // теперь мы вставляем объект содержащий свойства id и p
        // в свойство p вносим innerText из всех P найденых с помощью wrapper.querySelector(selector)
        list.push({
        	id: elem.id,
        	html: wrapper.outerHTML
        });
      }


    и затем так же его извлекать и вставлять в модалку:
    function updateModal(list) {
        // тут я до сих пор не понимаю что вы хотите увидеть в модальном окне, поэтому пока такой вывод.
        // если вам нужно чтото другое, вы вполне осилите переписать эту часть так как вам надо
        // в итем лежит объект (смотри addToList), соответственно к его ключам id и p можно обращаться
        modal.innerHTML = list.map(item=>{
        	return item.html;
        }).join("<br/>");
      }
  • Как добавить произвольные ключи в объект localStorage?

    lastuniverse
    @lastuniverse
    Genri_Rus,
    Логика такая - при нажатии на чекбокс, мне нужно заносить в localStorage id чекбокса и параграфов, которые находятся непосредственно после чекбокса


    но у параграфов нет id, откуда его брать?

    P.S. Я же смогу допустим сохранять картинку в localStorage ?

    смотря что вы имеете ввиду под сохранением картинки. если просто текст типа <img src="путь к картинке" alt=""> или путь к картинке то да, если данные содержащие изображение то надо учитывать ограничения на хранение информации в localstorage/

    Ограничение размера хранимых данных (как выше было уже сказано, примерно 5 Мб). Это достаточно маленький лимит для приложений, которые должны хранить большой объём данных или нуждаются в возможности работы без подключения к интернету. взято отсюда


    Получается мне нужно в объект добавить еще ключи и значения?

    да, в последнем примере как раз в массив list вставляются объекты, типа {"id":"id элемента": "p":"текст"}. Вы вполне можете добавлять в этот объект любые ключи и значения, и они будут сохранятся в localstorage.
  • Как из браузера сохранить текстовый файл?

    lastuniverse
    @lastuniverse
    программист №453, это будет работать везде, где работает вот этот модуль этого фреймворка

    а они утверждают что их фреймворк работает на большинстве браузеров:
    Поддержка различных платформ и браузеров

    Разрабатывайте HTML5 веб-приложения для настольных систем, планшетов и смартфонов с сенсорными экранами, работающие в большинстве браузеров.


    А раньше перечисляли все поддерживаемые браузеры