Avatar billede tblaster Nybegynder
08. marts 2004 - 21:14 Der er 5 kommentarer og
1 løsning

Mangler funktion der folder alle poster ud eller ind

Hejsa

Jeg har denne javascript som jeg bruger til at folde nogle punkter ud med. Det jeg gerne vil er at jeg kan kalde en javafunktion der folder alle de punkter ud jeg har på min side. Funktionen skal gerne være dynamisk så den automatisk folder alt ud eller så jeg fortæller hvor mange punkter der er på siden og udfra det ved den så hvor mange den skal løbe igennem. Desuden skal det naturligvis være sådan at man kan trykke på linket igen og så folder alle posterne sig ind igen. Er der nogen der kan hjælpe med det.

Jeg kalder funktionen eks. vha. følgende: "expandIt('el10')" Hvis jeg skal sende antal poster med havde jeg forestillet mig noget lig føglende: "expandAll('231')" hvor 231 er antallet af poster på siden og kan funktionen laves uden at den skal vide antal poster vil det jo være: "expandAll()"

Min nuværende javascript ser således ud:

ImageStien_up = "pics/triup.gif"
ImageStien_down = "pics/tridown.gif"

var bV=parseInt(navigator.appVersion);
NS4=(document.layers)?true:false;
IE4=(document.all)?true:false;
ver4=(NS4 || IE4)?true:false;
isExpanded=false;

if (document.images)
{
    arImLoad=new Array ("pics/triup.gif");
    arImList=new Array ();
    for (counter in arImLoad)
    {
        arImList[counter]=new Image();
        arImList[counter].src=arImLoad[counter] + ".gif";
    }
}

function SetImageSti()
{
    ImageStien_up = "pics/triup.gif"
    ImageStien_down = "pics/tridown.gif"
}

function expandIt(){return}

function expandAll(){return}

function reDo(){window.location.reload()}

function getIndex(el)
{
    ind=null;
    for (i=0; i<document.layers.length; i++)
    {
        whichEl=document.layers[i];
        if (whichEl.id==el)
        {
            ind=i;
            break;
        }
    }
    return ind;
}

function arrange()
{
    nextY=document.layers[firstInd].pageY + document.layers[firstInd].document.height-10;
    for (i=firstInd+1; i<document.layers.length; i++)
    {
        whichEl=document.layers[i];
        if (whichEl.visibility != "hide")
        {
            whichEl.pageY=nextY;
            nextY += whichEl.document.height-10;
        }
    }
}

function expandIt(el)
{
    if (!ver4) return;
    if (IE4) {expandIE(el)} else {expandNS(el)}
}

function expandIE(el)
{
    whichEl=eval(el + "Child");
    whichIm=event.srcElement;
    if (whichEl.style.display == "none" || whichEl.style.display == "")
        {
            whichEl.style.display="block";
            whichEl.isExpanded=true;
            whichIm.src=ImageStien_up;
        }
    else
        {
            whichEl.style.display="none";
            whichEl.isExpanded=false;
            whichIm.src=ImageStien_down;
        }
}

function expandNS(el)
{
    whichEl=eval("document." + el + "Child");
    whichIm=eval("document." + el + "Parent.document.images['imEx']");
    if (whichEl.visibility == "hide")
    {
        whichEl.visibility="show";
        whichEl.isExpanded=true;
        whichIm.src=ImageStien_up;
    }
    else
    {
        whichEl.visibility="hide";
        whichEl.isExpanded=false;
        whichIm.src=ImageStien_down;
    }
    arrange();
}

function showAll()
{
    for (i=firstInd; i<document.layers.length; i++)
    {
        whichEl=document.layers[i];
        whichEl.visibility="show";
    }
}

function expandAll(isBot)
{
    newSrc=(isExpanded)?ImageStien_down:ImageStien_up;
    if (NS4)
    {
        document.images["imEx"].src=newSrc;
        for (i=firstInd; i<document.layers.length; i++)
        {
            whichEl=document.layers[i];
            if (whichEl.id.indexOf("Parent") != -1)
            {
                whichEl.document.images["imEx"].src=newSrc;
            }
            if (whichEl.id.indexOf("Child") != -1)
            {
                whichEl.visibility=(isExpanded)?"hide":"show";
                whichEl.isExpanded=(isExpanded)?false:true;
            }
        }
        arrange();
        if (isBot && isExpanded) scrollTo(0,document.layers[firstInd].pageY);
    }
    else
    {
        divColl=document.all.tags("DIV");
        for (i=0; i<divColl.length; i++)
        {
            if (divColl(i).className == "child")
            {
                divColl(i).style.display=(isExpanded)?"none":"block";
                divColl(i).isExpanded=(isExpanded)?false:true;
            }
        }
        imColl=document.images.item("imEx");
        for (i=0; i<imColl.length; i++)
        {
            imColl(i).src=newSrc;
        }
    }
    isExpanded=!isExpanded;
}

with (document) {
    write("<STYLE TYPE='text/css'>");
    write(".parent {");
    if (NS4) {write("position:absolute; visibility:hidden;")};
    if (IE4) {write("margin-top:-10;")};
    write("margin-left:0;");
    write("color:#006");
    write("}");
    write(".child {");
    if (NS4) {write("position:absolute; visibility:hidden;")};
    if (IE4) {write("display:none;")};
    write("margin-left:0;");
    write("}");
    write(".other {");
    if (NS4) {write("position:absolute; visibility:hidden;")};
    write("margin-left:0;");
    write("}");
    write("</STYLE>");
}

function linkIt(whichEl, whichHref)
{
    lay=(NS4)?eval("document."+whichEl+"Child"):eval(whichEl+"Child");
    if (!lay.isExpanded) expandIt(whichEl);
    nlay=(NS4)?lay.document.images[whichHref]:document.images[whichHref];
    if (NS4)
    {
        sY=nlay.y+lay.pageY-20
        window.scrollTo(0,sY);
    }
    else {nlay.scrollIntoView();scroll(0,document.body.scrollTop-20);
    nlay.parentElement.style.backgroundColor="#FF99FF";setTimeout("nlay.parentElement.style.backgroundColor='white'",1000);}
}
Avatar billede tblaster Nybegynder
08. marts 2004 - 21:29 #1
Glemte lige at skrive at den funktion som jeg postet med koden expandAll() er en som jeg fandt som skulle hjælpe jer. Funktionen laver ikke det jeg gerne vil have. Hvis man aktiver den så folder alle poster sig ud og man får en javascript fejl. Trykker man igen så lukker alle posterne sig ikke. Så måske funktionen kan hjælpe jer til at hjælpe mig. Hvis ikke så er jeg også frisk på at få en helt ny funktion!
Avatar billede roenving Novice
08. marts 2004 - 22:09 #2
Det ser ud til at koden er lavet i 1996, '97 eller '98 og den er derfor solidt outdated ...

-- men hvordan ser de elementer ud, som du skal have fat i ?-)
Avatar billede tblaster Nybegynder
09. marts 2004 - 08:17 #3
Hvis du har en bedre måde at gøre det på med en nyere kode eller noget så smid det endelig ... det vil være super!

Jeg bruger følgende:
str = str & "<DIV id=""999Parent"">"
str = str & "<input onClick=""expandIt('el999')"" type=""checkbox"" "& adgangChecked &" value=""Ja"" >"
str = str & "</DIV>"
   
str = str & "<DIV class=""child"" id=""el999Child"">"
str = str & "Tekst"
str = str & "</DIV>
Avatar billede tblaster Nybegynder
10. marts 2004 - 15:43 #4
Hva så ... er der nogen der kan hjælpe?
Avatar billede tblaster Nybegynder
12. marts 2004 - 18:54 #5
Jeg har fundet denne og håber at det måske er en bedre funktion men jeg kan ikke få funktionen der folder alle ud til at virke ... er det nogen der kan hjælpe med den?

<SCRIPT>

var g_nExpando=0;
function putItemInState(n,bState)
{
    var oItem,oGif;
    eval('oItem=document.all.descr'+n);
    eval('oGif=document.all.expandoGif'+n);

    if (bState=='toggle') bState=(oItem.style.display=='block');

    if(bState)
    {
        oItem.style.display='none';
        oGif.src='images/cross.gif';
    }
    else
    {
        oItem.style.display='block';
        oGif.src='images/min.gif';
    }
}


function expand(nItem)
{
    putItemInState(nItem,'toggle');  //toggle the nth item
}


function expandAll()
{
    if (!g_nExpando)  //cannot expand all unless fully rendered
    {
        document.all.chkFlag.checked=false; //force unchecked
        return;
    }
    var bState=!document.all.chkFlag.checked;  //probably faster to cache this dom result
    for(var i=0; i<g_nExpando; i++)
        putItemInState(i,bState);
}

</SCRIPT>
Avatar billede tblaster Nybegynder
13. marts 2004 - 12:49 #6
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester