Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    info javascript su legenda

    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 ]

  2. #2
    perchè nessuno mi risponde? sbaglio qualcosa?
    il sole splendeva, non avendo alternative, sul niente di nuovo

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Secondo me non si capisce il problema.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    dato che non ho mai scritto 2 righe in javascript volevo sapere se il metodo che ho usato era funzionale o qualcuno avesse un'idea migliore e più semplice.

    L'ho scritto male? Non si capisce cosa fa?
    il sole splendeva, non avendo alternative, sul niente di nuovo

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Forse, si può anche "snellire" ma se funziona perché complicarsi la vita visto che comunque già adesso non sono righe e righe di codice.
    Se invece vuoi un giudizio sulla sintassi dello script, devi attendere i guru del forum (br1/xinod)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Aspettando il Guru ti ringrazio, infatti forse sono un po' paranoico...
    solo che sono forse un po' troppo entusiasta del mio primo approccio con un linguaggio sconosciuto!

    Poi se magari qualcuno lo vuole copiare....ben venga
    il sole splendeva, non avendo alternative, sul niente di nuovo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.