Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.01.2020, 22:41
Новичок на форуме
Отправить личное сообщение для gunner17 Посмотреть профиль Найти все сообщения от gunner17
 
Регистрация: 06.03.2019
Сообщений: 9

Почему обработчик работает один раз?
Всем привет, помогите чайнику в азах js))
есть код, почему addEventListener работает только один раз? объясните
let div=document.createElement('div');
document.body.append(div);
div.innerHTML='sdkjbfsdbf';
let divId=1;
div.id=String(divId);

function func(){
let fDiv=document.getElementsByTagName('div');
console.log(fDiv);
fDiv[0].addEventListener('click', function(){
fDiv[0].remove();
divId++;
let div=document.createElement('div');
document.body.append(div);
div.id=String(divId);
// func(); ВОТ если функцию вызывать то сработает много раз)


});
}
func();
Ответить с цитированием
  #2 (permalink)  
Старый 02.01.2020, 23:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

gunner17,
у вас функция назначает клик диву который уже есть, а не второму добавленному.
Ответить с цитированием
  #3 (permalink)  
Старый 02.01.2020, 23:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

gunner17,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #4 (permalink)  
Старый 02.01.2020, 23:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

gunner17,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  @import url('https://fonts.googleapis.com/css?family=Stoke&display=swap');
  div {
     border: 1px dashed Gray; padding: 5px;
     height: 100px;
     width: 100px;
     display: flex;
     align-items: center;
     justify-content: center;
  }
  div:after{
      content: attr(id);
      text-align: center;
      font: 900 4.3em / 53px "Stoke", sans-serif;
  }

  </style>


</head>
<body>
<script>
let divId = 1;
let fDiv = document.getElementsByTagName('div');

(function func() {
    if (fDiv[0]) fDiv[0].remove();
    let div = document.createElement('div');
    document.body.append(div);
    div.id = String(divId);
    divId++;
    fDiv[0].addEventListener('click', func);
})()
</script>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 02.01.2020, 23:57
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

рони, вместо…
display: flex;
align-items: center;
justify-content: center;


в данном случае можно и так…
display: grid;
place-content: center;


https://caniuse.com/#search=place-content
Ответить с цитированием
  #6 (permalink)  
Старый 02.01.2020, 23:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Malleys,
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить функцию один раз (убрать обработчик) k_DizeL Общие вопросы Javascript 9 16.10.2016 00:56
Подключение script один раз Mateus Javascript под браузер 7 08.10.2013 11:25
Как после ресайза вызвать обработчик один раз? Nanto Events/DOM/Window 1 23.08.2013 19:55
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 20:37
Почему функция срабатывает один раз? Bogdan808 Javascript под браузер 4 06.09.2010 23:41