• User Newbie

    problema scriptaculous con interazione altra funzione

    salve a tutti,
    ho un problema con una funzione javascript e l'interazione con scriptaculous.
    questa è la funzione:

    
    function crea(elemento,sito,area,contesto,illlustrazionec,notec,classe,tipo,materiale,dimensioni,numeroscavo,luogo,numeromuseo,illustraazionep,biblio,noteg){
        var nome_elemento ="cat"+elemento;     
           
        var collapse2 = new animatedcollapse(""+nome_elemento+"", 500, true);
        
        if(!$('obj'+elemento)){
            
            newitem=Builder.node( 'li', {className:'item',id:'obj'+elemento}, [Builder.node( 'div', {className:'handle'},'obj'+elemento)] );
            newchiudi=Builder.node( 'div', {className:'chiudi'});
            newlink=Builder.node( 'a', {href:'javascript:rimuovi('+elemento+')', className:'chiudilink'},'x');
            newespandi=Builder.node( 'a', {href:'javascript:collapse2.slideit()', className:'espandi_finestra'},'espandi/ritira');
            
            newitem.appendChild(newchiudi);
            newchiudi.appendChild(newlink);
            $('firstlist').appendChild(newitem);
            newitem.appendChild(newespandi);
            
            $('obj'+elemento).innerHTML=$('obj'+elemento).innerHTML+'sito'+sito+'&nbsp;&nbsp;area<br>'+area+'contesto'+contesto+'<a href="javascript:collapse2.slideit()">espandi/ritira</a> ';
            $('obj'+elemento).innerHTML+='<div id=\"'+nome_elemento+'\">&nbsp;&nbsp;illlustrazionec<br>'+illlustrazionec+'notec&nbsp;&nbsp;'+notec+'classe<br>'+classe+'tipo&nbsp;&nbsp;'+tipo+'materiale<br>'+materiale+'dimensioni&nbsp;&nbsp;'+dimensioni+'numeroscavo<br>'+numeroscavo+'luogo&nbsp;&nbsp;'+luogo+'numeromuseo<br>'+numeromuseo+'illustraazionep&nbsp;&nbsp;'+illustraazionep+'biblio<br>'+biblio+'noteg<br>'+noteg+'</div>';
            document.getElementById('id_generico').innerHTML+=' <script type="text/javascript">var collapse2=new animatedcollapse("'+nome_elemento+'", 500, true); </script>';
            rendisortable();
        }
    }
    
    

    questa mi permette di creare un oggetto con scriptacolous. Il mio problema sta nel fatto che l'oggetto che viene creato, graficamente, è troppo grosso, infatti se mi trovo ad avere più oggetti, finisco di riempire troppo lo schermo.
    Così ho pensato di aggiungerci un effetto che mi nascondesse i div e che al click di un link me lo mostrasse.
    Ho trovato sulla rete questo effetto:
    http://www.juliuswebdesign.com/div_anime/animated_div.htm

    ed ho detto facile, prendo la classe, la creo

     
        var collapse2 = new animatedcollapse(""+nome_elemento+"", 500, true);
    
    ```creo anche il div 
    

    $('obj'+elemento).innerHTML+='<div id="'+nome_elemento+'">  illlustrazionec<br>'+illlustrazionec+'notec  '+notec+'classe<br>'+classe+'tipo  '+tipo+'materiale<br>'+materiale+'dimensioni  '+dimensioni+'numeroscavo<br>'+numeroscavo+'luogo  '+luogo+'numeromuseo<br>'+numeromuseo+'illustraazionep  '+illustraazionep+'biblio<br>'+biblio+'noteg<br>'+noteg+'</div>';

    la classe è questa (ovviamente non sto a postare tutto il codice
    

    var uniquepageid=window.location.href.replace("http://"+window.location.hostname, "").replace(/^//, ""); //get current page path and name, used to uniquely identify this page for persistence feature

    function animatedcollapse(divId, animatetime, persistexpand, initstate){
    this.divId=divId;
    this.divObj=document.getElementById(divId);
    this.divObj.style.overflow="hidden";
    this.timelength=animatetime;
    this.initstate=(typeof initstate!="undefined" && initstate=="block")? "block" : "contract";
    this.isExpanded=animatedcollapse.getCookie(uniquepageid+"-"+divId); //"yes" or "no", based on cookie value
    this.contentheight=parseInt(this.divObj.style.height);
    var thisobj=this;
    if (isNaN(this.contentheight)){ //if no CSS "height" attribute explicitly defined, get DIV's height on window.load
    animatedcollapse.dotask(window, function(){thisobj._getheight(persistexpand)}, "load");
    if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes"); //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
    this.divObj.style.visibility="hidden"; //hide content (versus collapse) until we can get its height
    }
    else if (!persistexpand && this.initstate=="contract" || persistexpand && this.isExpanded!="yes") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
    this.divObj.style.height=0; //just collapse content if CSS "height" attribute available
    if (persistexpand)
    animatedcollapse.dotask(window, function(){animatedcollapse.setCookie(uniquepageid+"-"+thisobj.divId, thisobj.isExpanded)}, "unload");
    }

    animatedcollapse.prototype._getheight=function(persistexpand){
    this.contentheight=this.divObj.offsetHeight
    .....
    ...
    ..

    e il gioco è fatto, ma ovviamente, per la legge di murphy, non ha funzionato.
    firebug mi da questo errore:
    
    this.divObj has no properties
    animatedcollapse("cat22", 500, true, undefined)scriptacolous.js (line 15)
    crea("22", "mari", "AREA", "LIVELLO", "CONTESTO", "", "NOTE CONTESTO", "CLASSE", "TIPO", "MATERIALE", "DIMENSIONI", "NUMERO SCAVO", "LUOGO CONSERVAZIONE", "NUMERO MUSEO", "", "BIBLIOGRAFIA")scriptacolous.js (line 128)
    onclick(click clientX=0, clientY=0)form (line 1)
    
    ![image](chrome://firebug/content/blank.gif)    this.divObj.style.overflow="hidden";
    
    sapreste aiutarmi?
    grazie in anticipo!
    
    Nep

  • User Newbie

    nessun aiuto??:bho: