Задать вопрос
Местоположение
Россия

Достижения

Все достижения (4)

Наибольший вклад в теги

Все теги (19)

Лучшие ответы пользователя

Все ответы (85)
  • Как выровнять в гриде по горизонтали?

    @7rows
    Frontend Разработчик / Vue / JS / TS / CSS
    justify-items - выравнивает элементы внутри их ячеек
    justify-content - выравнивает всю сетку по горизонтали

    Вот ссылка
    https://doka.guide/css/grid-guide/

    Либо вы как-то не так задали вопрос, либо покажите полный код, что вы хотите.
    Ответ написан
    Комментировать
  • Как такое сверстать?

    @7rows
    Frontend Разработчик / Vue / JS / TS / CSS
    Держи
    Недавно нашли, нам очень помогло, переменные можешь так же, отрегулировать

    Можно еще что-то тут глянуть
    Ответ написан
    1 комментарий
  • Из-за чего сайт может отображаться как текст в Telegram WebView?

    @7rows
    Frontend Разработчик / Vue / JS / TS / CSS
    Лови, была у нас такая проблема, тоже на nuxt3

    https://bugs.telegram.org/c/46110

    https://github.com/nuxt/nuxt/pull/30163 - фикс, отпишись потом, если получилось
    Ответ написан
    1 комментарий
  • Как удалить элемент из LocalStorage?

    @7rows
    Frontend Разработчик / Vue / JS / TS / CSS
    Привет, смотри, есть несколько причин
    1- внутри renderTable() ты каждый раз добавляешь новый обработчик события на tbody, что приводит к дублированию. Лучше добавить его один раз вне этой функции.
    2-
    const isWatched = document.querySelector('#isWatched').cahecked;
    -
    тут у тебя кажется тоже ошибка
    3- чтобы удалить нужный фильм, нужно знать, какой именно элемент массива удалять. Удобно добавить каждому фильму уникальный id - если есть, если нет, то добавь randomUUId / Date
    Ну и далее, у тебя при удалении будет
    films = films.filter(film => film.id !== filmId);
            localStorage.setItem('films', JSON.stringify(films));

    4-
    edit: 'Редактировать',
            delete: 'Удалить'

    не имеет смысла хранить, это элементы интерфейса, но никак не данных

    Примерно такой код, он не идеален, но должен работать

    const form = document.querySelector('#film-form');
    const tbody = document.querySelector('#film-tbody');
    
    function getFilms() {
        return JSON.parse(localStorage.getItem('films')) || [];
    }
    
    function setFilms(films) {
        localStorage.setItem('films', JSON.stringify(films));
    }
    
    function renderTable() {
        const films = getFilms();
        tbody.innerHTML = '';
        films.forEach(film => {
            const row = document.createElement('tr');
            row.dataset.id = film.id;
            row.innerHTML = `
                <td>${film.title}</td>
                <td>${film.genre}</td>
                <td>${film.releaseYear}</td>
                <td>${film.isWatched ? "Да" : "Нет"}</td>
                <td>
                    <button class="edit">Редактировать</button>
                    <button class="delete">Удалить</button>
                </td>
            `;
            tbody.appendChild(row);
        });
    }
    
    function addFilmToLocalStorage(film) {
        const films = getFilms();
        film.id = Date.now();
        films.push(film);
        setFilms(films);
        renderTable();
    }
    
    function handleFormSubmit(e) {
        e.preventDefault();
        const title = document.querySelector('#title').value;
        const genre = document.querySelector('#genre').value;
        const releaseYear = document.querySelector('#releaseYear').value;
        const isWatched = document.querySelector('#isWatched').checked;
        addFilmToLocalStorage({ title, genre, releaseYear, isWatched });
        form.reset();
    }
    
    tbody.addEventListener('click', e => {
        const target = e.target;
        if (target.classList.contains('delete')) {
            const row = target.closest('tr');
            const id = Number(row.dataset.id);
            let films = getFilms();
            films = films.filter(f => f.id !== id);
            setFilms(films);
            renderTable();
        }
    });
    
    form.addEventListener('submit', handleFormSubmit);
    renderTable();


    Ну и лучше, в таких случаях кидать ссылку на пример
    Ответ написан
    1 комментарий
  • Как запретить уход вправо у слайдера?

    @7rows
    Frontend Разработчик / Vue / JS / TS / CSS
    btnNext.disabled = position === (itemsCount - 1);
    Как-то так, этот код отработает тогда, когда у вас последний элемент будет равен позиции
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (3)