Prueba y compara el rendimiento de tu PC con nuestro banco de pruebas.

Duda de novato en javascript…



  • LLevo un rato peleandome con una cosa en javascript, y no hay manera :S
    Estoy intentando coger la posicion de un div; esta posicion la tengo definida en la hoja de estilos, tanto el "left" como el "top".

    ¿Que demonios hay que hacer para coger estas propiedades?

    Si por ejemplo tengo el id, no me funciona:
    var prueba = document.getElementById("divQueQuiero");
    var izquierda = prueba.style.left;
    var arriba = prueba.style.top;
    if (izquierda<400) { // izquierda vale 300 px
    haz_algo_que_llame_la_atencion;
    }

    Y pillo muchos rollos, no se como apañarlo :nono:
    Si alguien sabe como hacerlo se lo agradeceria ;D



  • ¡Esta publicación está eliminada!


  • wenas

    me temo que tendrás que definirles la propiedad left y top directamente a la capa del modo

    Al leerla, el script tiene que ir después de definir la capa, es decir, al final del documento, entre el cierre del y el cierre del . Esto es así, porque si defines el script entre las etiquetas , el dhtml va leyendo secuencialmente de arriba a abajo, y si lo primero que se encuentra va a ser una referencia a un objeto capa el cual todavía no se ha creado (puesto que no ha llegado a esa linea aún) pues va a petar.

    No se si me explico

    Para leer la capa, pues lo típico, aunque el document.getElementById funciona para IE y Mozilla, es mejor diferenciar términos, te ahorrará muchos problemas.
    **
    if(document.all)
    { //Esto para internet explorer
    var obj = document.all.capa;
    var top = obj.style.top; //Tal como habías dicho

    }else if(document.getElementById)
    {//Esto para mozilla
    var obj = document.getElementById("capa");
    var top = obj.style.top; //Tal como habías dicho
    }
    **

    Recomendación: Si no lo tienes, instálate el Microsoft Script Editor. Es un software depurador de código. Viene con cualquier cd de Office 2000 o Office 2003. Sólo que tienes que buscarlo entre los componentes a instalar. (Si te da pereza buscar, le das a instalar todo en el disco duro, que es lo que hago yo).

    Para comprobar si lo tienes, es un .Exe llamado MSE7.exe que se encuentra en Archivos de Programa/Microsoft Office/Office11/mse7.exe

    Después, vas a las propiedades avanzadas de internet explorer, y desmarcas las casillas de:

    • Deshabilitar depuración de comandos de internet explorer
    • Deshabilitar la depuración de comandos (otros)

    Y a partir de ahi, todo lo que hagas, lo pruebas siempre con IE para depurar errores, y después lo adaptas a Mozilla (si quieres). Revisando la consola de error de mozilla por si las moscas.

    Con esto, cualquier error que tenga la página, te saltará el depurador de microsoft script editor para depurar el código en caliente. Éste, tiene un apartado que es Inspección Rápida, que te permite ver el valor que van cogiendo las variables, los objetos de la página, etc.

    saludos



  • Sobre IDEs…
    Ook muchas gracias; ahora estoy viciado con el Aptana, es la leche, te permite hasta debugear una pagina O_o (al menos en el firefox), me ha dejado flipado este programilla . Tambien te dice de todos los comandos javascript cuales son compatibles con qué navegadores, en medio del autocompletar, con lo que es comodisimo. Tambien tiene autocompletar de css 😄 .

    Lo malo que yo primero me baso en el firefox y luego ya lo apañare para el IE, que le tengo mania (aunque lo usen el 99% de la gente, lo se :p).

    Vale ahora siguiendo con el codigo :risitas: ...
    No he pensado en decirtelo, es que estaba algo ofuscado ayer por la noche XD. Yo tengo el estilo en un identificador de la hoja de estilos, y tenia el div antes del script javascript (lo tengo a saco, ahora solo quiero hacer funcionar esto y luego limpiar el codigo ;)).

    Pero sigue sin haber manera, he probado de poner el script entre el /body y el /html, y sigue sin pillarlo :S



  • que te hace esto ??

    var left = document.all.capa.offsetLeft;
    var top = document.all.capa.offsetTop;

    alert(left + " " + top);



  • Depende del tipo de posicionamiento que estes empleando…

    Si estas utilizando posicionamiento relativo o absoluto. Si en la css pones position:absolute puedes obtener el attributo top y el left asi:

    document.getElementById("nombre_de_la_capa").offsetTop (u .offsetLeft, si lo q quieres es el atributo left)

    En el caso de q utilices posicionamiento relativo, es otro cantar 😉



  • Vale muchas gracias! Eso va de coña ;D

    Estaba usando posicionamiento absoluto, otra cosa que tampoco dije :rollani:


Accede para responder