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

474
Visualizações
Javascript: ¿por qué puedo mostrar un div oculto, pero no ocultarlo?

Estoy tratando de escribir una función simple para mostrar u ocultar dinámicamente un elemento. He escrito funciones como esta varias veces antes y nunca he tenido un problema... No puedo entender qué está mal aquí. Utilizo Javascript para crear dinámicamente el elemento y luego, en el proceso de crearlo y agregarlo a la página, también escribo $(element).css("display", "none") para que se oculte en la página carga.

Ahora estoy escribiendo una función de escucha de eventos para mostrar los elementos ocultos en respuesta a un evento de clic. Cuando hago clic en el botón con este detector de eventos adjunto, los elementos ocultos SÍ aparecen (¡genial!), pero luego, cuando vuelvo a hacer clic en el cuadro, permanecen en la página. Cuando console.log la sesión de la función, puedo ver que siempre está presionando la condición de show y nunca presionando la condición de hide ... pero no puedo entender por qué después de pasar horas y horas mirando ejemplos y probando diferentes implementaciones.

Para ser claros, no asigné display: none; en la hoja de estilo CSS estática. Lo agregué dinámicamente en el JS cuando creé los elementos.

 // Pass in an array of cards called "filterCards" const toggleDisplayFilterCards = (filterCards) => { // Loop through the cards, and for each card, grab the ID tag for (let card of filterCards) { card = `#filter-card-container_${card.id}`; // If "display" style attribute = "none", show the div, else, hide it. if ($(card).css("display", "none")) { $(card).css("display", "") console.log("show"); } else if ($(card).css("display", "")) { $(card).css("display", "none"); console.log("hide"); } } };

¿Alguien ve una razón por la cual este código nunca alcanzaría la condición de "ocultar"? Inspeccioné el elemento en la consola una vez que se muestra en la página y confirmé que el atributo de estilo se cambió a "" , por lo que cuando hago clic en el mismo botón, espero que la función presione la condición "ocultar".

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

que hacen estos dos

 $(card).css("display", "none") $(card).css("display", "")

es que establecen el estilo de la tarjeta y luego devuelven el objeto jQuery que contiene la tarjeta. Los objetos siempre son verdaderos en JavaScript, por lo que hacer

 if ($(card).css("display", "none")) {

no tiene sentido

Debe recuperar el estilo (hecho con un solo parámetro), luego compararlo con el valor posible.

 if ($(card).css("display") === "none") { ... } else {
about 4 years ago · Juan Pablo Isaza 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