Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
element.getBoundingClientRect no es una función

¿Por qué dice que element.getBoundingClientRect is not a function ? Realmente no sé qué hacer.

Aquí está mi JS:

 const elementsFadeIn = document.querySelectorAll(".fade-in"); window.addEventListener("scroll", fadeIn); function fadeIn() { for (i in elementsFadeIn) { let element = elementsFadeIn[i]; let viewElement = element.getBoundingClientRect().top - window.innerHeight + 20; if (viewElement < 0) { element.classList.add("view-element"); } else { element.classList.remove("view-element"); } } }

y mi codigo css:

 .fade-in { transform: translateY(50px) translateZ(0); transition-delay: 0.7s; transition: 1s; opacity: 0; } .view-element{ opacity: 1; transform: translateY(0px) rotate(0deg) translateZ(0); }
about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

Llamó element.getBoundingClientRect().top en una lista de nodos y no en el elemento DOM .

Solución: acceda al elemento en el índice '0' de NodeList, obteniendo el elemento DOM. Recuerde que está utilizando querySelectorAll , por lo que su código debería ser:

 let viewElement = element[0].getBoundingClientRect().top
about 4 years ago · Santiago Gelvez Denunciar

0

El problema es que el bucle for ... in ... recorre todas las propiedades enumerable de un objeto. La NodeList que devuelve su querySelectorAll tiene claves numéricas para cada elemento contenido PERO también contiene el item de propiedades, keys , values , entries , forEach y length .

Pero estas propiedades adicionales no son HTMLElements, por lo tanto, no tienen el método getBoundingClientRect .

Verse a sí mismo:

 const items = document.querySelectorAll('.item'); for (const item in items) { console.log('item: ', item); }
 <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div>

En su lugar, desea utilizar el bucle for ... of ...

 const items = document.querySelectorAll('.item'); for (const item of items) { console.log('item: ', item); }
 <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div>

about 4 years ago · Santiago Gelvez Denunciar

0

Prueba esto:

 function fadeIn() { const elementsToFade = document.querySelectorAll(".fade-in"); elementsToFade.forEach(element => { let viewElement = element.getBoundingClientRect().top - window.innerHeight + 20; if (viewElement < 0) { element.classList.add("view-element"); } else { element.classList.remove("view-element"); } }) }
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda