PDA

Ver la Versión Completa : getElementById no accede a elementos no visibles


WPascal
22-09-2015, 17:28:00
Buenos días a todos, estoy trabajando con una aplicación web hecha en Javascript por otras personas, se trata de una especie de hoja de cálculo basada en una tabla, algunas celdas de la tabla no se ven por tanto hay que usar la barra de desplazamiento para verlas, el problema que tengo es que cuando intento acceder al contenido de algún elemento <td> mediante document.getElementById("celda_A5") por ejemplo, si la celda está visible al usuario logra acceder sin problemas, pero si en el momento no es visible, no encuentra dicha celda, como si no existiera, en el momento que muevo la barra de desplazamiento y hago visible la celda, nuevamente es reconocida, es como si cuando un elemento no es visible en pantalla, la función getElementById no lograra "verlo", entonces quisiera su ayuda y que me dijeran cómo solucionar esto, teniendo en cuenta que es un programa desarrollado por otro programador y no sé si hizo algo para que esto ocurriera, tal vez buscando optimizar la aplicación.
Gracias de antemano y que tenga buen día.

dec
22-09-2015, 17:55:27
Hola,

Prueba con el depurador de tu navegador para ver qué puede estar fallando: que el elemento no esté visible en la pantalla no quiere decir que no pueda seleccionarse, como puedes ver en el este "Fiddle" de prueba (http://jsfiddle.net/kjyyd977/), donde, pulsando el botón que verás en pantalla (marco HTML), se cambia el color de un elemento de texto que no está visible.

WPascal
22-09-2015, 18:05:12
Hola Dec, eso mismo pienso yo, por eso quería saber si hay alguna manera en que se pueda generar este comportamiento intencionalmente, por ejemplo para optimizar la carga de la página, puesto que si son por ejemplo 1000 celdas, solo tenga en memoria las 100 visibles y las cargue nuevamente cuando el usuario necesite verlas. Si existe este procedimiento, buscarlo en el código de la aplicación y desactivarlo.

WPascal
22-09-2015, 18:09:39
Y ya anteriormente había usado el depurador y efectivamente cuando la celda no está visible lanza como resultado "null", o sea que no exite ninguna celda con ese id