Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

259
Visualizações
Error al ejecutar 'getComputedStyle' en 'Ventana': el parámetro 1 no es del tipo 'Elemento' Recibo este error

Soy nuevo en Javascript y no puedo entender por qué recibo este error. Aquí está mi código:

 const bckg = document.querySelector(".bckg"); const compStyle = getComputedStyle(bckg);
 body { box-sizing: content-box; position: relative; } .visible { position: relative; top: 50px; margin: auto; background-color: bisque; height: 300px; width: 600px; overflow: hidden; } .bckg { position: absolute; left: 0px; width: 1200px; height: 300px; background-image: url("bckg.jpg") }
 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>New Game</title> <link rel="stylesheet" href="styles.css"> </head> <body> <script src="script.js"></script> <div class="visible"> <div class="bckg" id="bckg"> <div class="player"></div> <div class="obstacle"></div> </div> </div> </body> </html>

Este error aparece en Mozilla: "Error de tipo no detectado: Window.getComputedStyle: el argumento 1 no es un objeto". ¿Qué podría ser?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Su etiqueta de secuencia de comandos debe moverse al final del cuerpo. El script se cargó demasiado temprano.

Este error aparece en Mozilla: "Error de tipo no detectado: Window.getComputedStyle: el argumento 1 no es un objeto". ¿Qué podría ser?

Si lee el mensaje de error, dice que no pudo encontrar el argumento.

La razón de esto es que los navegadores cargan las etiquetas de JavaScript de forma síncrona. Ha sido un estándar desde que se introdujo JavaScript por primera vez.

Fragmento de solución

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>New Game</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="visible"> <div class="bckg" id="bckg"> <div class="player"></div> <div class="obstacle"> </div> </div> </div> <!-- I moved the script to the end of the body --> <script src="script.js"></script> </body> </html>

Al agregar un archivo console.log, podría haber visto que el argumento para Window.getComputedStyle no es un objeto

 const bckg = document.querySelector(".bckg"); console.log(bckg); // will return undefined

También puede probar el atributo "aplazar", sin embargo, ha sido una buena práctica mover las etiquetas del script al final del cuerpo para que sean compatibles con diferentes navegadores antiguos. Consulte https://www.w3schools.com/tags/att_script_defer.asp

Otra alternativa es usar el evento "DOMContentLoaded" https://developer.mozilla.org/en-US/docs/Web/API/Document/DOMContentLoaded_event

 document.addEventListener("DOMContentLoaded", function() { // code... });
about 4 years ago · Santiago Trujillo Relatório

0

Delta Boukensha tiene razón: su documento no ha terminado de cargarse. Entonces, coloque su secuencia de comandos en la parte inferior de su marcado como sugiere Delta o use una función de utilidad para ejecutar el código una vez que el documento se haya procesado, como:

 function whenDOMready( func ) { switch( String( document.readyState ) ) { case "complete": case "loaded": case "interactive": func(); break; default: window.addEventListener("DOMContentLoaded", (e) => func()); } }

Luego llámalo desde donde quieras así:

 let bckg; let compStyle; function domReady() { bckg = document.querySelector(".bckg"); compStyle = getComputedStyle(bckg); /* ...other code here */ } whenDOMready( domReady );

Hay dos beneficios que le brinda esta utilidad:

  1. No importa cuándo lo llame, funcionará, ya sea llamando a su función (func) inmediatamente o cuando se active el evento DOMContentLoaded. Si solo agrega el detector de eventos directamente, debe preocuparse por si ya se disparó o no.
  2. Tiene la garantía de que su DOM está listo para inspección y acceso.
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda