Задать вопрос
  • Как одинаковыми кнопками находящихся в разных блоках div, при клике на каждую плюсовать к предыдущему числу в переменную?

    учитесь задавать вопросы с минимальным копипастом кода. нужно приводить только ту часть кода которой будет достаточно для решения задачи. просматривать весь код не очень хочется. дайте возможность отвечающим сконцентрироваться на решении задачи
    не буду даже смотреть код, просто объясню принцип
    допустим score отображается в каком либо элементе - в инпуте или span с каким-то id (или может храниться в локалсторадж)
    то функция, которая будет увеличивать этот score, должна сначала прочитать его, потом увеличить на единицу и переписать.
    При этом любая кнопка, будет обращаться к сохраненному score и пересчитывать его
    Ответ написан
    2 комментария
  • Как удалить элемент массива в localstorage, по нажатию на крестик, и перезаписать массив?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    1. меньше вложенности
    if (data) { ... длинная простыня кода }, при отсутствии else лучше заменить на:

    if (! data) return;
    ...тот же код, на уровень левее

    2. некруто объявлять функции внутри if() и тем более внутри цикла for()

    3. DRY ("Don't Repeat Yourself" – «не повторяйся»). При обнаружении сохранённых элементов в LS, и при создании новых, происходит одно и то же действие: создание элемента списка, навешнивание событий и пр. В функцию его.

    По сути вопроса опять предложу переосмыслить архитектуру. Без деталей, в общем: есть массив (пустой, или заполненный из localStorage). Свежесозданные задания попадают в массив. Удаляемые — удаляются из массива.
    При изменениях массива — сохранять обновлённый в LS; стирать всё нарисованное ранее, и рисовать весь список с нуля, как будто только загрузили страницу. Ничего, это быстро )
    Ответ написан
    1 комментарий
  • Как удалить элемент массива в localstorage, по нажатию на крестик, и перезаписать массив?

    @alexalexes
    Нужно использовать обертку+замыкание для обработчика, удаляющего элемент по клику.
    tasks.push(data); // тут вставили очередной элемент
    let task_index = tasks.length - 1; // узнаем его индекс по длине массива, так как он в текущей ситуации последний
    // несколько строк спустя
    b1.addEventListener("click", 
    (function(inner_task_index) // функция-обертка для изоляции контекста, сюда передается значение task_index, я специально выделил его другим именем inner_task_index, чтобы видеть контекст функции-обертки
      {
    // обертка возвращает функцию-обработчик события  для addEventListener
    return function delFromLocalSt() {
        task.removeChild(li);
            let array = JSON.parse(localStorage.getItem('task'));
            array.splice(inner_task_index, 1); // удаляем элемент по известному индексу используя механизм замыкания, используя контекст функции обертки
        localStorage.setItem('task', JSON.stringify(array));
       }
    })(task_index) // вызываем хитрую обертку, чтобы обеспечить изоляцию переменной от контекста функции createEl
    );
    Ответ написан
    1 комментарий
  • Как подсоединить обработчики к данным которые я вывожу из localstorage?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Ответ на поставленный вопрос «Почему?» — потому, что из LocalStorage вытаскиваете HTML разметку и вставляете её, но слушатели событий к элементам не привязаны. Только при создании новой задачи у вас срабатывает b1.addEventListener('click', () => {

    Стоит разделять данные и их отображение.
    У todo приложения данные – это массив задач. Данные сохраняются в LS. Задача, минимально, это строка текста.
    Текстовое поле, кнопка для удаления — это всё уже мишура, отображение. Генерится динамически из данных.

    Три штуки в этом приложении:
    1. массив с задачами (задача просто строка, что там ввел юзер)
    2. отрисовка интерфейса из массива
    3. изменение массива через действия в интерфейсе
    И работают они по кругу )

    Что-то изменили – изменился массив – отрисовалось с нуля заново всё, как при первой загрузке.
    Так не накосячите со слушателями событий, в том числе.
    Но придётся усложнить данные: не просто строки, ещё и состояние выполнено/не_выполнено.

    К примеру, можно так держать данные:
    const tasks = [
      {text: "Заварить кофе", isDone: false},
      {text: "Пожарить яичницу", isDone: false},
      {text: "продрать глаза", isDone: true},
    ];
    Сохранять в LS сериализованный в JSON этот массив:
    const itemKey = 'tasks';
    localStorage.setItem(itemKey, JSON.stringify(tasks));
    Ответ написан
    Комментировать
  • Как получить данные из local storage браузера?

    ACCNCC
    @ACCNCC
    Делаю игры!
    записать
    localStorage.setItem("Ключ", "Данные");

    Получить:
    localStorage.getItem("Ключ")
    Ответ написан
    Комментировать
  • Как в Android-браузере убрать эффект от нажатия на ссылку?

    @patator

    Для андроида вот так -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-tap-highlight-color: transparent; /* For some Androids */

    Ответ написан
    2 комментария