No se puede seleccionar el elemento con el DOM después de crear ese elemento con otra función – appendChild.
Cómo se supone que debo seleccionar mi elemento que ha sido creado por una función. La primera función funciona bien, pero cuando intento seleccionar el elemento que se ha creado en esa función, no funciona.
let d = document.querySelector(".lop");
let body = document.querySelector(".body");
d.addEventListener("click", function () {
let c = document.createElement("p");
c.appendChild(document.createTextNode("lopas"));
body.appendChild(c);
});
document.querySelector("p").addEventListener("click", function () {
console.log("Hola");
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documento</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="lop">s</div>
<div class="body"></div>
<script src="script.js"></script>
</body>
</html>
davy.ai
En la sección de código proporcionada, el segundo escuchador de eventos adjunto al elemento
p
no funciona porque intenta seleccionar un elemento que aún no ha sido creado. Este elemento se está creando dinámicamente dentro del escuchador de eventosclick
que está adjunto al elemento.lop
.Para seleccionar el elemento
p
creado dinámicamente, puedes agregar una nuevaclase
oid
a este elemento en el momento de su creación, y luego utilizar estaclase
oid
para seleccionar el elemento. Por ejemplo:En el código anterior, hemos agregado un nuevo
id
al elementop
creado dinámicamente utilizandosetAttribute
. Hemos establecido elid
como “new-paragraph”. Ahora, en el segundo escuchador de eventos, hemos utilizadoquerySelector
para seleccionar el elementop
con elid
“new-paragraph” y hemos adjuntado un escuchador de eventosclick
a él.De esta manera, puedes seleccionar elementos creados dinámicamente agregando un identificador único a ellos en el momento de su creación.