Salve a tutti,
ho avuto bisogno di conoscere la posizione di un dato
elemento INPUT EDITA/RADIO/CHECKBOX sullo schermo al fine di
visualizzare dei DIV per lo scorrimento di risultati di ricerca.
Non trovando nessuna proprietà javascript che potesse essere
utile a riguardo, ho scritto la seguente funzione che calcola
la posizione sullo schermo attraverso un ciclo ricorsivo.
L'utilizzo é semplice:
* getOBJposition( id, "left" ) -> restituisce la coordinata X dell' elemento sullo schermo ...
* ... oppure getOBJposition( id, "top" ) -> restituisce la coordinata Y dell'elemento sullo schermo.
Questo codice sembra ben funzionare nei casi di test da me
effettuati, ma vorrei sottoporla ai lettori di questo forum
per eventuali correzioni e miglioramenti.
A presto
Alessandro Rosa
-----------------------------------------------------------------
function getOBJposition( id, dim )
{
var obj = document.getElementById( id );
var top = 0 ; var left = 0 ;
if ( obj != null || dim.length > 0 )
{
dim = dim.toLowerCase();
while( obj.tagName.length > 0 )
{
if ( obj.tagName.toUpperCase() == "BODY" ) break ;
if ( dim == "top" && obj.tagName != "TR" && obj.tagName != "TBODY" )
{
top += obj.offsetTop ;
top -= obj.clientTop ;
}
else if ( dim == "left" && obj.tagName != "TBODY" )
{
left += obj.offsetLeft ;
left -= obj.clientLeft ;
}
obj = obj.parentNode ;
}
if ( dim == "top" ) return top ;
else if ( dim == "left" ) return left ;
}
else
{
top = left = width = height = -1 ;
return false ;
}
}
ho avuto bisogno di conoscere la posizione di un dato
elemento INPUT EDITA/RADIO/CHECKBOX sullo schermo al fine di
visualizzare dei DIV per lo scorrimento di risultati di ricerca.
Non trovando nessuna proprietà javascript che potesse essere
utile a riguardo, ho scritto la seguente funzione che calcola
la posizione sullo schermo attraverso un ciclo ricorsivo.
L'utilizzo é semplice:
* getOBJposition( id, "left" ) -> restituisce la coordinata X dell' elemento sullo schermo ...
* ... oppure getOBJposition( id, "top" ) -> restituisce la coordinata Y dell'elemento sullo schermo.
Questo codice sembra ben funzionare nei casi di test da me
effettuati, ma vorrei sottoporla ai lettori di questo forum
per eventuali correzioni e miglioramenti.
A presto
Alessandro Rosa
-----------------------------------------------------------------
function getOBJposition( id, dim )
{
var obj = document.getElementById( id );
var top = 0 ; var left = 0 ;
if ( obj != null || dim.length > 0 )
{
dim = dim.toLowerCase();
while( obj.tagName.length > 0 )
{
if ( obj.tagName.toUpperCase() == "BODY" ) break ;
if ( dim == "top" && obj.tagName != "TR" && obj.tagName != "TBODY" )
{
top += obj.offsetTop ;
top -= obj.clientTop ;
}
else if ( dim == "left" && obj.tagName != "TBODY" )
{
left += obj.offsetLeft ;
left -= obj.clientLeft ;
}
obj = obj.parentNode ;
}
if ( dim == "top" ) return top ;
else if ( dim == "left" ) return left ;
}
else
{
top = left = width = height = -1 ;
return false ;
}
}