salve a tutti, credo sia la prima volta in vita mia che scrivo in un forum informatico quindi chiedo scusa in anticipo per eventuali oscenità...
volevo un parere per quanto riguarda uno script di una legenda che ho scritto. premetto che, come per i forum, anche con javascript sono neofita dato che mi ero sempre limitato all'uso del PHP.
Sono comunque riuscito ad avere questo risultato (cioè quello che volevo) ma dato che ho un po' "improvvisato" il codice volevo sapere se c'era un modo più logico e semplice.
il risultato è questo:
![]()
vedi esempio
io volevo creare un ibrido di javascript/PHP che mi permettesse di inserire dentro qualsiasi tabella una funzione tipo mostra legenda che disegnasse un div sull'angolo in questo modo.
<?php function...($testo)
$rand = rand(0,100); ?>
<tr><td>
<div id="tab_<?php echo $rand;?>"></div>
//questo div l'ho messo per individuare la tabella in cui è contenuto, la variabile rand è per poter inserirne più di uno
<div id="div1_<?php echo $rand;?>" class="div1">
<script> carica_finestra(<?php echo $rand;?>); </script>
<a style="cursorointer;" onclick="mostra_nascondi_finestra(<?php echo $rand;?>);">MOSTRA/NASCONDI</a>
<div id="div2_<?php echo $rand;?>">
<?php
echo $testo;
?>
</div>
</div>
</td></tr>
<?php } ?>
e in javascript:
function carica_finestra(id_rand){
//questa funzione serve per conoscere la posizione dell'oggetto
function findOffset(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
// oggetto div float in alto a dx
var obj_legenda = document.getElementById('div1_'+id_rand);
//oggetto div solo per sapere la tabella in cui è contenuto
var obj_tab = document.getElementById('tab_'+id_rand);
//rilevo il primo oggetto table che lo contiene
while (obj_tab != null && obj_tab.tagName != 'TABLE') {
obj_tab = obj_tab.offsetParent;
}
// disegno la legenda
if (obj_tab != null) {
pos = findOffset(obj_tab);
obj_legenda.style.left = (pos[0]+obj_tab.offsetWidth-120)+"px";
obj_legenda.style.top = (pos[1]-25)+"px";
}
//funzione per mostrare/nascondere al click del mouse
function mostra_nascondi_finestra(id_rand){
var obj_leg = document.getElementById('div2_'+id_rand);
if (obj_leg.style.display!='block') {
obj_leg.style.display='block';
}
else{
obj_leg.style.display='none';
}
}
Scusatemi se sono stato troppo logorroico...
[se avete tempo guardate le mie foto e i miei corti: minportanasega.altervista.org ]