Foros del Web » Programando para Internet » Javascript »

problema con superposición de capas

Estas en el tema de problema con superposición de capas en el foro de Javascript en Foros del Web. Hola amig@s!! Tengo un problema con una función javascript que se supone debería ocultarme una capa y mostrarme otra que tengo superpuesta. Pero no lo ...
  #1 (permalink)  
Antiguo 25/02/2010, 01:43
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
problema con superposición de capas

Hola amig@s!!

Tengo un problema con una función javascript que se supone debería ocultarme una capa y mostrarme otra que tengo superpuesta. Pero no lo hace y no entiendo por qué, a ver si podeis aiudarme.
Las capas las imprimo con php de la siguiente forma
Código PHP:
echo"
        <div id='logueo' align='center'>
            <div id='login'>
                <fieldset>
                <form name='fidentifica' method = 'post' action = './Index.php'>
                <table>
                    <tr>
                        <td><span class='login'><span class='username'><input type='text' name='user' id='user' value='Nombre de usuario' onClick='javascript:vaciaInput();'/></span></span></td>
                        <td>&nbsp;</td>
                    </tr>
                    <tr>
                        <td><span class='login'><span class='password'><input type='password' name='pss' value=''/></span></span></td>
                        <td><span class='login'><input type='submit' name='bslogin' value='' class='botonlogin' title='Enviar'/></span></td>                    
                    </tr>
                    <tr>
                        <td colspan = '2'>
                            <span class='login'>
                                <a href='#'><span class='lostpassword' title='No recuerdas tu clave?'></span></a><a href='#'><span class='lostusername' title='No recuerdas tu usuario?'></span></a><a href='#'><span class='registration' title='Crear una cuenta nueva'></span></a>
                            </span>
                        </td>
                    </tr>
                </table>
                </form>
                </fieldset>
            </div>
        
            <div id='logout'>
                <fieldset>
                <form name='flogout' action='./Index.php' method='post'>
                <table>
                    <tr>
                        <td><span class='login'><span class='texto-login'>Hola "
;
                        if(isset(
$_SESSION['usuario']))
                            echo 
$_SESSION['usuario'];
                            echo
"</span></span></td>
                        <td><span class='login'><input type='submit' name='bslogin' value='' class='botonlogout' title='Enviar'/></span></td>                    
                    </tr>            
                </table>
                </form>
                </fieldset>
            </div>
        </div> 
Es un módulo de logueo. Al hacer click en el botón de login se recogen los datos en el Index.php, se comprueba si es correcta la información de logueo y si es así se iama a una función javascript

Código PHP:
if(isset($bslogin))
{
    
$usu $_POST['user'];
    
$pss $_POST['pss'];
    if(
login($usu$pss))
    {
        echo
"<script languaje='text/javascript'>
        cambiaDiv();
        </script>"
;
    }

Código Javascript:
Ver original
  1. function cambiaDiv()
  2. {
  3.     alert('entro');
  4.     document.getElementById("login").style.visibility = 'hidden';
  5.     document.getElementById("logout").style.visibility = 'visible';
  6. };
Veis el alert? pues lo hace.

Esto último, la función javascript la he cambiado de varias maneras; así como la veis, poniendo que siga ocultándome la capa principal pero que la que está detrás cambie la clase y ahora tenga otra con z-index superior a la primera.
Y nada. Lo primero de todo es que no me oculta la primera capa(login), es más,la consola de errores de firefox me dice que document.getElementById("login") is null y lo mismo de logout.

Otra cosa a tener en cuenta, el código css de logueo, login y logout es el siguiente
Código CSS:
Ver original
  1. #logueo
  2. {
  3.     position:relative;
  4.     margin-top:20px;
  5.     text-align:center;
  6. }
  7.  
  8. #logueo #login
  9. {
  10.     position:absolute;
  11.     z-index:2;
  12.     top:20px;
  13.     left:10px;
  14. }
  15.  
  16. #logueo #logout
  17. {
  18.     position:absolute;
  19.     z-index:1;
  20.     top:20px;
  21.     left:10px;
  22.    
  23. }

Gracias!!
  #2 (permalink)  
Antiguo 25/02/2010, 02:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: problema con superposición de capas

no entiendo algo a menos que sean caprichos. ¿por que no muestras el DIV segun si el usuario se ha logeado con exito o no pero manejandolo desde php? si quieres hacerlo como lo presentas, asegurate que el codigo javascript se interprete luego de que ambos DIVs esten creados. la unica forma que conozco para que devuelva null con getElementById es si al momento de invocar la funcion no existe un elemento con el ID indicado.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 25/02/2010, 04:06
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con superposición de capas

Cita:
Iniciado por zerokilled Ver Mensaje
no entiendo algo a menos que sean caprichos. ¿por que no muestras el DIV segun si el usuario se ha logeado con exito o no pero manejandolo desde php? si quieres hacerlo como lo presentas, asegurate que el codigo javascript se interprete luego de que ambos DIVs esten creados. la unica forma que conozco para que devuelva null con getElementById es si al momento de invocar la funcion no existe un elemento con el ID indicado.
Si no lo hago desde php es por no tener que repetir todo lo que hay antes de ese div(ese div va dentro de otro div con otro contenido que a su vez esta dentro de otro div). Además, ahora lo hago con javascript, más adelante podría hacerlo con ajax.

La función javascript es iamada después de pulsar el botón de login, así que se supone que los elementos ia han sido cargados.
Pero ahora que lo dices, hablamos de un formulario que recarga la página al pulsar en el submit y esto puede hacer que no se haian cargado de nuevo los elementos antes de iamar a la función... voy a ver si hay forma humana de corregir ésto.

Gracias!!
  #4 (permalink)  
Antiguo 25/02/2010, 04:20
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con superposición de capas

Verás, he probado hacer lo que me dijiste y ha dado resultado.

Cuando el usuario se loguea primero cargo el div y luego iamo a la función. He alargado el código en el index pero ahora mismo no se me ocurre una forma más sencilla.

Código PHP:
if(isset($action))
{
    if(
$action == 'cierraSesion')
       {
        
cargaInicioLeft('');
            
$action($_SESSION['usuario']);
    }
}
else if(isset(
$bslogin))
{
    
$usu $_POST['user'];
    
$pss $_POST['pss'];
    if(
login($usu$pss))
    {
        
cargaInicioLeft($_SESSION['usuario']);
        echo
"<script languaje='text/javascript'>
        cambiaDiv();
        </script>"
;
    }
    else
    {
        
cargaInicioLeft('');
    }
}
else
{
    if(isset(
$_SESSION['usuario']))
            
cargaInicioLeft($_SESSION['usuario']);
    else
        
cargaInicioLeft('');

Gracias de nuevo!!

Etiquetas: capas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:35.