Почему обработчик работает один раз?
Всем привет, помогите чайнику в азах 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(); |
gunner17,
у вас функция назначает клик диву который уже есть, а не второму добавленному. |
gunner17,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
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> |
рони, вместо…
display: flex; align-items: center; justify-content: center; в данном случае можно и так… display: grid; place-content: center; https://caniuse.com/#search=place-content |
Malleys,
:thanks: |
Часовой пояс GMT +3, время: 15:39. |