Div que a veces deja un rastro

Estado
Cerrado para nuevas respuestas

abmptc

Nuevo Miembro
Miembro
Hola,

Estoy programando en .Net, y tengo un Div que oculto usando:
document.getElementById("scwIE").style.visibility = "hidden"

Este Div contiene una Tabla. El caso es que “a veces” (pongamos 1 vez de cada 15) cuando cargo la página, se me queda dibujado en la página la estructura de la tabla que contiene el Div.

He hecho la prueba de intentar ocultar el Div volviendo a ponerlo manualmente hidden en un evento onClick, pero no me hace ni caso. Solo desaparece si hago clic en cualquier elemento del formulario que envíe datos al servidor.

¿Se os ocurre como puedo solucionar este problema tan extraño?

Un saludo.
 

JPablo

Miembro Activo
Miembro
El div existe en el DOM apenas carga la página. Y está como visible.
Cuando el script se ejecuta, le otorga el hidden.

Toma el div, inline agrégale style="display:none" y listo.
Si tienes que hacer algo extra con el div puedes darle el visibility. (Conoces las diferencias entre display y visibility?).

Entonces ni bien cargue la página, no debería mostrarte el div.
 

abmptc

Nuevo Miembro
Miembro
Por si le interesa a alguien, os pongo los pasos que seguí, y la solución final por la que opté:

Una cosa curiosa es que el código:
<script
src="../../common/script/scw.js"
type="text/javascript">
</script>

Generalmente lo ponía en la sección Head del html, y de esa forma el rastro me salía una vez de cada 15 que cargaba la página. Por lo que para hacer pruebas era un rollazo. Puse este código al final de la página, justo antes de </body>
</html>, y el rastro de la tabla que contiene el Div me aparecía siempre.

# Intenté ocultar manualmente el Div:
document.getElementById("scwIE").style.visibility = "hidden"
document.getElementById("scwIE").style.display = "none"

# Intenté ocultar la tabla que contiene el Div:
document.getElementById("scw").style.display = "none"
document.getElementById("scw").style.visibility = "hidden"

# Intenté hacer desaparecer todos los Div de la página:
<scripttype="text/javascript">
function ocultatodo() {
estotaabierto = document.getElementsByTagName("div");
for (var y = 0; y < estotaabierto.length; i++) {
//### Esto funciona, si tiene Id el Div te lo enseña:
alert(estotaabierto.id); //Esto funciona, si tiene

//### Esto funciona, el Div existe pero te lo oculta
estotaabierto.style.visibility = 'hidden'

//### Esto funciona, el Div deja de existir
//estotaabierto.style.display='none'
}
}
ocultatodo();
</script>
En este caso me ocultó hasta el ValidationSummary(parece ser que interiormente este control está compuesto por un Div). Y con este Control también me pasaba que “a veces” me dejaba el rastro de la tabla que contiene interiormente.

# Intenté hacer desaparecer todas las Table de la misma forma que en el código anterior.
En este caso me borraba todas mis Table, pero “a veces” me seguía mostrando el rastro.

# Intenté usar otro tipo de calendarios de Cliente: Jquery Datapicker
Pero a parte de tener que meter en el código varios .js y .css, la utilización era un poco farragosa, y encima uno que me bajé daba problemas en el navegador (daba un error y lo reiniciaba)

# Finalmente conseguí tener un calendario fácil y práctico usando “calendar Extender” de Ajax.

Muchas gracias a todos por vuestra ayuda y un saludo.
 

JPablo

Miembro Activo
Miembro
Estás teniendo problemas en ambos lados, tanto en backend como en frontend y ya me perdí.

Si ya lo tienes solucionado, enhorabuena.

Para la próxima, utiliza un framework salvo que sea necesario lo contrario. jQuery está por demás de bien.
Y también, está bueno que lo que seas que vayas a ocultar o mostrar dependiendo eventos, esté oculto de entrada.

Los scripts al final del código, genial :)
 
Estado
Cerrado para nuevas respuestas
Arriba Pie