Пользовательская панель инструментов Javascript - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь создать пользовательский интерфейс панели мониторинга, где пользователи могут удалить определенные вещи с главной страницы, которые они не хотят видеть, и сохранить их через LocalStorage для использования в будущем.

По сути, У меня есть предварительно загруженный список в localstorage, содержащий все возможные элементы. Если пользователь щелкнет «X», чтобы удалить этот элемент, эта функция будет соответствовать приведенной ниже функции и удалит его из списка, а затем повторно сохраните обновленный список в localstorage. Элементы скрываются путем присоединения класса bootstrap d-none к целевым элементам.

Проблема, с которой я столкнулся, заключается в том, что, хотя элементы могут быть успешно удалены и сохранены, я не могу найти решение pu sh все еще видимые до самого верха, если все вышеперечисленное удаляется. Элементы находятся в одном ряду, но разные col-6.

Я приложил 2 скриншота, чтобы помочь визуализировать. Один с половиной удаленных элементов, и один из тех, что я выкладываю как сетку.

Как вы можете видеть, когда я удалил 3 элемента, те, которые все еще видимы, находятся на своем первоначальном месте. У кого-нибудь есть решение, чтобы заставить их? Я понимаю, что «скрытые» элементы все еще находятся на своих местах, и поэтому у меня осталось более уродливое пустое пространство, чем в моем доме пересечения животных!

    //hideThis handles hiding cards by ID
    const hideThis = (id) => {
        //the element to hide
        let targetDiv = document.getElementById(id);
        //hide it
        targetDiv.classList.add('d-none');
        //for each of the to show elements
        for (let i = 0; i < elementsToShow.length; i++) {
            //if that element is equal to the target ID
            if (elementsToShow[i] === targetDiv.id) {
                // remove it
                elementsToShow.splice(i, 1);
                localStorage.setItem('shownElements', JSON.stringify(elementsToShow));
            }
        }
        console.log(elementsToShow);
        console.log(localStorage.getItem('shownElements'));
    };

enter image description here

enter image description here

1 Ответ

1 голос
/ 26 марта 2020

Проблема здесь в том, что класс d-none не добавляется в класс ["col-12", "col-md-6"], класс d-none добавляется к тому, что находится внутри эти классы ["col-12", "col-md-6"], и эти классы все еще присутствуют там, занимая пространство.

Чтобы решить эту проблему, вы можете использовать функцию closest () метод в javascript.

например target.closest ("col-12"). classList.add ("d-none")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...