Как сделать div открытым с помощью кнопки, закрываемой нажатием кнопки при наличии нескольких кнопок? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть несколько кнопок на моем сайте, которые вызывают скрипт для открытия контента в полноэкранном режиме, и я также хочу иметь возможность щелкнуть созданный элемент div, чтобы закрыть его. Это работает, но после открытия одного контейнера, который после этого удаляется, моя программа выдает ошибки, пытаясь нажать другую кнопку.

function closeDiv(evt) {

        const maindiv = document.getElementById('div3');
        let targetElement = evt.target;

        do {
            if (targetElement == maindiv.childNodes[1]) {
                return;
            }

            targetElement = targetElement.parentNode;

        } while (targetElement);

        var viewpost = maindiv.childNodes[1];

        viewpost.parentNode.removeChild(viewpost);

        maindiv.classList.remove('viewcontainer');


    };




function buttonClick(button) {
    var div = button.parentElement.parentElement;
    var clone = div.cloneNode(true);

    var element = div.childNodes;

    var username = element[1].innerText;

    var title = element[7].innerText;

    var contenttext = div.childNodes[3].value;


    var clone = document.createElement('div');
    clone.classList.add('viewcontainercon');

    var viewuser = document.createElement('p');
    viewuser.classList.add('viewcontaineruser');
    var text = document.createTextNode(username);
    viewuser.appendChild(text);

    clone.appendChild(viewuser)
    var viewtitle = document.createElement('p');
    viewtitle.classList.add('viewcontainertitle');
    var text = document.createTextNode(title);
    viewtitle.appendChild(text);

    clone.appendChild(viewtitle);



    var viewcontent = document.createElement('p');
    viewcontent.classList.add('viewcontainercontent');
    var text = document.createTextNode(contenttext);
    viewcontent.appendChild(text);

    clone.appendChild(viewcontent);


    document.getElementById('div3').classList.add('viewcontainer');

    document.getElementById('div3').appendChild(clone);

    document.addEventListener("click", function(event){
        var isClickInside = button.contains(event.target);

        if (!isClickInside) {
            closeDiv(event);
        }
    });


    }

Ошибка, в частности, `viewpost is undefined 'в функции closeDiv (), которая странно, так как это не должно быть вызвано, пока после щелчка. Есть идеи?

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