Newsgroup: it.comp.lang.javascript
Titolo: Posizione di un div

Esiste un modo per sapere la posizione di un div, non absolute...
Se provo a estrarre top e left ottengo una stringa vuota, questi due
parametri sembrano validi solo se il div ha style="position:absolute"
mentre non sono valorizzati altrimenti
Ho bisogno di posizionare degli elementi in maniera relativa basandomi
sulla posizione di un div , che varia in generale a seconda del browser
e delle impostazioni del client.
come si fa?

 e delle impostazioni del client.
Queste cose si devono fare semplicemente tramite CSS, non si dovrebbe
chiamare in causa JS.
I CSS sono per la forma, Javascript per il comportamento.
-- 
~ "FINARMENTE LI SFRATTATI AVRANNO UN TETTO SULLA TESTA!
...però tirato ammodino, un tegolo pe' vorta.." (Il vernacoliere)

Ho un menu costruito in javascript, che piazza degli elementi in
maniera absolute.
vedi:
http://www.3bsoft.com
ora ho messo un
<div id="mainMenu"></div> (come dovrebbe essere, in realta' ora c'e'
anche un position:absolute che dovrei togliere)
nel codice javascript ho due variabili, StartTop e StartLeft che dovrei
assegnare recuperando la posizione del <div ...>
questa e' la funzione che mi deve recuperare top e left del div in
questione (tutto commentato, il problema e' che senza position:absolute
top e left non sono valorizzati);
function Go(){
    // recupero posizione
    var bmenu = document.getElementById("mainMenu");
    //alert('"'+bmenu.style.top+'"');
	//StartTop =  parseInt(bmenu.style.top);
	//StartLeft = parseInt(bmenu.style.left);
...
andarmi a settare le due variabili in maniera tale che il menu si
sovrapponga ai box fittizi che ho messo nell'html

 sovrapponga ai box fittizi che ho messo nell'html
Ecco, non è ben chiaro quest'ultimo passaggio.


questo e' l'html:
<div id="mainMenu">
<table border="0" cellspacing="1" cellpadding="0" width="240">
  <tr height="20">
	<td width="80" class="sfondoTabellaContenuto">
	</td>
	<td width="80" class="sfondoTabellaContenuto">
	</td>
	<td width="80" class="sfondoTabellaContenuto">
	</td>
  </tr>
  <tr>
	 <td colspan="5">
	 </td>
  </tr>
</table>
</div>
il menu che costruisco in javascript ha tre voci principali, ciascuno
deve andare sopra il box (cella della tabella) definito in:
	<td width="80" class="sfondoTabellaContenuto">
	</td>
il problema si riconduce a recuperare la posizione del div mainMenu e a
settare da questo le variabili StartTop e StartLeft nella funzione Go()
Solo che left e top non sono valorizzati

 Solo che left e top non sono valorizzati
Bene o male ho capito il problema, ma mi sfugge perché tu voglia risolvere
la cosa in questo modo.
BTW, prova come ti ho suggerito all'inizio, con offsetLeft e offsetTop:
	var bmenu=document.getElementById("mainMenu");
	alert(bmenu.offsetLeft+","+bmenu.offsetTop);
Se non dovesse bastare un primo livello, fai una funzione di iterazione
usando offsetParent.
-- 
~ Neanche il futuro e' piu' quello di una volta.

 la cosa in questo modo.
Suggerimenti?
La cosa che mi da' piu' fastidio e' vedere la pagina nella cache di
google con il menu nella stessa posizione...
http://216.239.59.104/search?sourceid=navclient&ie=UTF-8&rls=DVXA,DVXA:2005-06,DVXA:en&q=cache:http%3A%2F%2Fwww.3bsoft.com%2F

Comunque ho usato offsetParent e mi sembra vada piu' che bene (anche
per il menu' laterale a scomparsa).
Dicevi che c'era qualche controindicazione?
Grazie per l'aiuto