Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.11.2021, 10:41
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

Не создает div при повторном нажании кнопки
Добрый день. Есть div который создается при нажании на кнопку, потом добовляются стили через секунду. Когда удаляю этот div с помощью removeChild, все окей по логике, но когда я повторно нажимаю на кнопку которая создает этот div, он не создается. Может я забыл что-то указать для этого?


<div class="div">
      <button class="button" id="butt">open modal</button>
    </div>


CSS

Код:
body {
    background-color: rgba(232, 169, 10, 0.357);
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.button {
    border: none;
    background: none;
    border-radius: 10px;
    border: 5px solid red;
    font-size: 30px;
}

.modal {
    width: 500px;
    height: 350px;
    opacity: 0;
    visibility: hidden;
    background-color: rgba(22, 232, 40, 0.618);
}

.container {
    height: 100%;
}

.content {
    height: 100%;
}

.div {
    width: 70%;
    height: 400px;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

._active {
    opacity: 1;
    visibility: visible;
}
const div = document.querySelector(".div");
const butt = document.querySelector(".button");

butt.addEventListener("click", () => {

  function modal() {
    let obj_modal = "";
    obj_modal = `
            <div class="modal">
                <div class="container">
                    <img src="./game_project_web/src/IMG/blog-image/Layer 38.jpg" alt="" class="content">
                    <button class="button_modal">CLOSE</button>
                </div>
            </div>
        `;
    div.innerHTML += obj_modal;
  }
  modal(document.querySelector(".div"));

  function active_class() {
    const modal_over = document.querySelector(".modal");
    modal_over.classList.add("_active");
  }
  setTimeout(active_class, 1000)

  const modal_close = document.querySelector(".button_modal");
  const modal_over = document.querySelector(".modal")
  modal_close.addEventListener("click", () => {
    modal_over.classList.remove("_active");
    function close_modal() {
      div.removeChild(modal_over);
    }
    setTimeout(close_modal, 2000);
  });
});
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2021, 11:05
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,138

Сообщение от Alexander3928
Может я забыл что-то указать для этого?
Возможно ты грешить не на того...
В твоем варианте даже само событие "добавить модальный элемент" не срабатывает.
Наверное сам клик на кнопке убивает вот это
Сообщение от Alexander3928
div.innerHTML += obj_modal;
Вот так будет работать...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
-->
<style>
body {
    background-color: rgba(232, 169, 10, 0.357);
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.button {
    border: none;
    background: none;
    border-radius: 10px;
    border: 5px solid red;
    font-size: 30px;
}

.modal {
    width: 500px;
    height: 350px;
    opacity: 0;
    visibility: hidden;
    background-color: rgba(22, 232, 40, 0.618);
}

.container {
    height: 100%;
}

.content {
    height: 100%;
}

.div {
    width: 70%;
    height: 400px;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

._active {
    opacity: 1;
    visibility: visible;
}
</style>
<script>
</script>
</head>
<body>
<div class="div">
	<button class="button" id="butt">open modal</button>
	<div class='container'></div>
</div>
<script>
const div = document.querySelector(".div .container");
const butt = document.querySelector(".button");

butt.addEventListener("click", () => {
	function modal() {
		const obj_modal = `
			<div class="modal">
				<div class="container">
					<img src="./game_project_web/src/IMG/blog-image/Layer 38.jpg" alt="" class="content">
					<button class="button_modal">CLOSE</button>
				</div>
			</div>
		`;
		div.innerHTML = obj_modal;
	}
	modal(document.querySelector(".div"));

	function active_class() {
		const modal_over = document.querySelector(".modal");
		modal_over.classList.add("_active");
	}
	setTimeout(active_class, 1000)

	const modal_close = document.querySelector(".button_modal");
	const modal_over = document.querySelector(".modal")
	modal_close.addEventListener("click", () => {
		modal_over.classList.remove("_active");
		function close_modal() {
			div.removeChild(modal_over);
		}
		setTimeout(close_modal, 2000);
	});
});
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2021, 11:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,138

Или вот так, это уже без контейнера...
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
-->
<style>
body {
    background-color: rgba(232, 169, 10, 0.357);
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

.button {
    border: none;
    background: none;
    border-radius: 10px;
    border: 5px solid red;
    font-size: 30px;
}

.modal {
    width: 500px;
    height: 350px;
    opacity: 0;
    visibility: hidden;
    background-color: rgba(22, 232, 40, 0.618);
}

.container {
    height: 100%;
}

.content {
    height: 100%;
}

.div {
    width: 70%;
    height: 400px;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
}

._active {
    opacity: 1;
    visibility: visible;
}
</style>
<script>
</script>
</head>
<body>
<div class="div">
	<button class="button" id="butt">open modal</button>
</div>
<script>
const div = document.querySelector(".div");
const butt = document.querySelector(".button");

butt.addEventListener("click", () => {
	function modal() {
		const obj_modal = `
			<div class="modal">
				<div class="container">
					<img src="./game_project_web/src/IMG/blog-image/Layer 38.jpg" alt="" class="content">
					<button class="button_modal">CLOSE</button>
				</div>
			</div>
		`;
		div.insertAdjacentHTML('beforeend', obj_modal);
	}
	modal(document.querySelector(".div"));

	function active_class() {
		const modal_over = document.querySelector(".modal");
		modal_over.classList.add("_active");
	}
	setTimeout(active_class, 1000)

	const modal_close = document.querySelector(".button_modal");
	const modal_over = document.querySelector(".modal")
	modal_close.addEventListener("click", () => {
		modal_over.classList.remove("_active");
		function close_modal() {
			div.removeChild(modal_over);
		}
		setTimeout(close_modal, 2000);
	});
});
</script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2021, 11:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

Alexander3928,
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
        body {
            background-color: rgba(232, 169, 10, 0.357);
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
        }
        .button {
            border: none;
            background: none;
            border-radius: 10px;
            border: 5px solid red;
            font-size: 30px;
        }
        .button:focus {
            outline: none;
        }
        .modal {
            width: 500px;
            height: 350px;
            opacity: 0;
            visibility: hidden;
            background-color: rgba(22, 232, 40, 0.618);
        }
        .container {
            height: 100%;
        }
        .content {
            height: 100%;
        }
        .div {
            width: 70%;
            height: 400px;
            display: flex;
            justify-content: center;
            align-items: center;
            flex-direction: column;
        }
        ._active {
            opacity: 1;
            visibility: visible;
        }
        #butt.open {
            opacity: .3;
        }
    </style>
</head>
<body>
    <div class="div">
        <button class="button" id="butt">open modal</button>
    </div>
    <script>
        const butt = document.querySelector(".button");
        const div = document.querySelector(".div");
        butt.addEventListener("click", () => {
            if (butt.classList.contains("open")) return;
            butt.classList.add("open");
            function modal() {
                let obj_modal = `
                        <div class="modal">
                                <div class="container">
                                        <img src="./game_project_web/src/IMG/blog-image/Layer 38.jpg" alt="" class="content">
                                        <button class="button_modal">CLOSE</button>
                                </div>
                        </div>
                `;
                div.insertAdjacentHTML("beforeend", obj_modal);
            }
            modal();
            const modal_over = document.querySelector(".modal");
            const modal_close = modal_over.querySelector(".button_modal");
            function active_class() {
                modal_over.classList.add("_active");
            }
            setTimeout(active_class, 1000)
            modal_close.addEventListener("click", () => {
                modal_over.classList.remove("_active");
                function close_modal() {
                    modal_over.remove();
                    butt.classList.remove("open");
                }
                setTimeout(close_modal, 2000);
            });
        });
    </script>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 12.11.2021, 10:27
Аспирант
Отправить личное сообщение для Alexander3928 Посмотреть профиль Найти все сообщения от Alexander3928
 
Регистрация: 19.05.2021
Сообщений: 75

ksa,
рони,
Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не добавляеться div в другой div при событие onclick kobriyyu Общие вопросы Javascript 5 22.05.2021 21:59
Вывод изображение по координатам при нажатии кнопки sssema96 Events/DOM/Window 9 20.01.2021 18:50
Событие при создании div tr0y Events/DOM/Window 13 21.10.2015 08:28
Показать div при наведении / jQuery updaite Элементы интерфейса 4 28.07.2014 03:45
Сохранение цвета рамки DIV при нажатии, и сброс при нажатии на другой DIV этого класа Webtest Элементы интерфейса 3 29.06.2014 22:13