Avatar billede gunnernuhansen Nybegynder
09. november 2007 - 14:56 Der er 10 kommentarer og
1 løsning

Hvordan sætter jeg et menutree til ikke at folde sig ud i starten

Hej

Jeg sidder og leger med det her.

// ######################################################################

// ## flipMenu 5.0.0 (c) J. Reijers
// ## Last modifications: 23 March 2007

// ######################################################################

// ## Degree of indentation from the left.
    flipIndentation = "10px";

// ## Padding inbetween menu items.
    flipVerticalPadding = "8px";

// ## Margin between the left of the browser and the menu.
    flipLeftMargin = "16px";

// ## Margin between the top of the browser and the menu.
    flipTopMargin = "10px";

// ## Allow multiple menus to fold out without closing all the other open ones.
    flipOpenMultipleMenus = false;

// ## Preserve the current state of the menu (requires cookies).
    flipSaveMenuState = false;

// ## Use custom images for bullets
    flipImages = false;

// ## Images to use (/files/Billeder/RS/)
    flipImg_open  = "foldmenu_0.gif";
    flipImg_closed = "foldmenu_1.gif";
    flipImg_static = "foldmenu_2.gif";

// ## Initialise all flipMenus onload
    flipInitOnLoad = true;

// ## Message to display in status bar while loading
    flipLoadingMessage = "Loading...";

// ######################################################################

function alterSize(someSize, alterAmount) {
    someSize = String(someSize);
    var tmpNr = parseFloat(someSize.replace(/\D/g, ""));
    var tmpChar = someSize.replace(/\d/g, "");
    return isNaN(tmpNr) ? someSize : ((tmpNr + alterAmount) + tmpChar);
}

isIE = (String(navigator.appVersion).indexOf("MSIE") > -1);
if (!isIE) flipIndentation = alterSize(flipIndentation, -16);
if (!isIE) flipLeftMargin = alterSize(flipLeftMargin, -16);

document.write(
    "<style type=\"text/css\">" +

    "ul.flipMenu { margin-top: " + flipTopMargin + "; margin-left: " + flipLeftMargin + "; " + (flipImages ? "" : "list-style-type: none;") + " }" +
    "ul.flipMenu ul, ul.flipMenu li { padding-top: " + flipVerticalPadding + "; margin-left: " + flipIndentation + "; margin_right: 0px; " + (flipImages ? "" : "list-style-type: none;") + " }" +

    "li.flipFolderOpen { cursor: pointer; " + (flipImages ? "list-style-image: url(" + flipImg_open + ");" : "") + " }" +
    "li.flipFolderClosed { cursor: pointer; " + (flipImages ? "list-style-image: url(" + flipImg_closed + ");" : "") + " }" +

    "</style>"
);

if (flipImages) {
    aFlipPreloads = [];
    aFlipPreloads[0] = new Image;
    aFlipPreloads[0].src = flipImg_open;
    aFlipPreloads[1] = new Image;
    aFlipPreloads[1].src = flipImg_closed;
    aFlipPreloads[2] = new Image;
    aFlipPreloads[2].src = flipImg_static;
}

function addEvent(someObj, someEvent, someFunction) {
    if (someObj.addEventListener) { someObj.addEventListener(someEvent, someFunction, true); return true; } else if (someObj.attachEvent) return someObj.attachEvent("on" + someEvent, someFunction); else return false;
}

function openCloseFlip(theItem, newSetting, openParents) {
    if (theItem.flipID) {
        if (openParents) {
            var tmpItem = theItem;
            while (tmpItem.parentElement || tmpItem.parentNode) {
                tmpItem = (tmpItem.parentElement) ? tmpItem.parentElement : tmpItem.parentNode;
                openCloseFlip(tmpItem, newSetting);
            }
        }
        if ((theItem.className == "flipFolderOpen" && newSetting == "closed") || (theItem.className == "flipFolderClosed" && newSetting == "open")) {
            if (!theItem.childrenInitialised) {
                for (var j = 0; j < theItem.childNodes.length; j++) if (theItem.childNodes[j].nodeName == "UL" && !theItem.childNodes[j].initialised) initFlip(theItem.childNodes[j]);
                theItem.childrenInitialised = true;
            }
            theItem.getElementsByTagName("UL")[0].style.display = (newSetting == "open") ? "" : "none";
            theItem.className = newSetting == "open" ? "flipFolderOpen" : "flipFolderClosed";
        }
    }
}

function openFlip(theItem, openParents) {
    openCloseFlip(theItem, "open", openParents);
}

function closeFlip(theItem, closeParents) {
    openCloseFlip(theItem, "closed", closeParents);
}

function toggleFlip(theElement) {
    if (theElement.flipID) {
        var theItem = theElement;
        var isContained = true;
    } else {
        if (theElement && theElement.button > 0) return false;
        var theItem = (isIE) ? event.srcElement : theElement.target;

        var isContained = false;
        if (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") isContained = true; else while (theItem.parentElement || theItem.parentNode) {
            if (theItem.className == "flipStatic" || theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") {
                isContained = (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed");
                break;
            }
            theItem = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
        }
    }

    var toOpenFlip = (isContained && theItem.className == "flipFolderClosed");

    if (!flipOpenMultipleMenus && (toOpenFlip || theItem.className == "flipStatic")) {
        if (theItem.parentElement || theItem.parentNode) {
            var parentUL = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
            for (var i = 0; i < parentUL.childNodes.length; i++) closeFlip(parentUL.childNodes[i]);
        }
    }

    if (isContained) {
        if (toOpenFlip) openFlip(theItem); else closeFlip(theItem);
    }
}

function setAllFlips(startElement, newSetting) {
    if (typeof startElement == "undefined") var startElement = document;
    if (typeof newSetting == "undefined") var newSetting = "closed";

    var aUL = startElement.getElementsByTagName("UL");
    for (var i = 0; i < aUL.length; i++) {
        var parentFlip = aUL[i].parentElement ? aUL[i].parentElement : aUL[i].parentNode;
        openCloseFlip(parentFlip, newSetting);
    }
}

function openAllFlips(startElement) {
    setAllFlips(startElement, "open");
}

function closeAllFlips(startElement) {
    setAllFlips(startElement, "closed");
}

function initFlip(startElement) {
    if (!document.createElement) return false;

    if (!startElement || !startElement.nodeName) {
        var aUL = document.getElementsByTagName("UL");
        for (var i = 0; i < aUL.length; i++) {
            if (flipLoadingMessage != "") window.status = flipLoadingMessage + " " + parseInt((i / (aUL.length - 1)) * 100, 10) + "%";
            var curUL = aUL[i];
            if (curUL.className == "flipMenu") {
                initFlip(curUL);

                // ## Fix text selecting problem in Mozilla
                curUL.onselectstart = new Function("return false");
                curUL.onmousedown = new Function("return false");
                curUL.onclick = new Function("return true");
            }
        }

        if (flipSaveMenuState) loadMenuState();

        if (flipLoadingMessage != "") window.status = "";
        return true;
    }

    if (startElement.className == "flipMenu") startElement.style.display = "";

    if (!startElement.childNodes || startElement.childNodes.length == 0) return false;

    if (typeof flipIDCur == "undefined") flipIDCur = 0;
    if (!startElement.initialised) {
        var aUL = startElement.getElementsByTagName("UL");
        for (var i = 0; i < aUL.length; i++) aUL[i].style.display = "none";
    }

    for (var i = 0; i < startElement.childNodes.length; i++) {
        var curNode = startElement.childNodes[i];
        if (curNode.nodeName == "LI") {
            flipIDCur++;
            curNode.flipID = flipIDCur;

            var nodeHasChildren = curNode.getElementsByTagName("UL").length > 0;
            if (nodeHasChildren) {
                if (flipImages && curNode.flipClosed) curNode.style.listStyleImage = "url(" + curNode.flipClosed + ")";

                if (curNode.className == null || curNode.className == "") curNode.className = "flipFolderClosed";
            } else {
                curNode.className = "flipStatic";
                if (flipImages && !curNode.style.listStyleImage) {
                    if (!curNode.flipStatic) curNode.flipStatic = flipImg_static;
                    curNode.style.listStyleImage = "url(" + curNode.flipStatic + ")";
                }
            }

            if (!curNode.flipOpen) curNode.flipOpen = flipImg_open;
            if (!curNode.flipClosed) curNode.flipClosed = flipImg_closed;

            if (curNode.flipIsOpen) openFlip(curNode);
        }
    }

    startElement.initialised = true;
}

function rootOfFlip(flipID, startElement) {

    function containsFlip(startElement, flipID) {
        var flipFound = false;
        var i = 0;
        while (i < startElement.childNodes.length && !flipFound) {
            var curNode = startElement.childNodes[i];
            flipFound = (curNode.flipID == flipID) ? true : containsFlip(curNode, flipID);
            i++;
        }
        return flipFound;
    }

    var rootFlip = null;

    if (!startElement || !startElement.nodeName) {
        var aUL = document.getElementsByTagName("UL");
        var i = 0;
        while (rootFlip == null && i < aUL.length) {
            var curUL = aUL[i];
            if (curUL.nodeName == "UL" && curUL.className == "flipMenu") rootFlip = rootOfFlip(flipID, curUL);
            i++;
        }
        return rootFlip;
    }

    if (startElement.childNodes) for (var i = 0; i < startElement.childNodes.length; i++) {
        var curNode = startElement.childNodes[i];
        if (curNode.flipID == flipID || containsFlip(curNode, flipID)) rootFlip = curNode;
    }

    return rootFlip;
}

function getCookie(cookieName) {
    var allCookies = document.cookie;
    var indexStr = allCookies.indexOf(cookieName + "=");
    if (indexStr == -1) return "";
    indexStr = allCookies.indexOf("=", indexStr) + 1;
    var endStr = allCookies.indexOf(";", indexStr);
    if (endStr == -1) endStr = allCookies.length;
    return unescape(allCookies.substring(indexStr, endStr));
}

function inArray(someID, someArray) {
    for (var i = 0; i < someArray.length; i++) if (someArray[i] == someID) return true;
    return false;
}

function getMenuState(startElement) {
    if (!startElement.childNodes || startElement.childNodes.length == 0) return "";

    var openItems = "";
    var aUL = startElement.getElementsByTagName("UL");
    for (var i = 0; i < aUL.length; i++) {
        var curNode = aUL[i];
        var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
        if (curNode.style.display == "" && parentFlip.flipID) openItems = " " + parentFlip.flipID;       
    }
    return openItems;
}

function putMenuState(startElement) {
    if (!startElement.childNodes || startElement.childNodes.length == 0) return false;

    var aUL = startElement.getElementsByTagName("UL");
    for (var i = 0; i < aUL.length; i++) {
        var curNode = aUL[i];
        var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
        if (inArray(parentFlip.flipID, aOpenItems)) {
            openFlip(parentFlip);
            if (typeof prevFlipRoot == "undefined") {
                var testRoot = rootOfFlip(parentFlip.flipID);
                if (testRoot.flipID == parentFlip.flipID) prevFlipRoot = testRoot;
            }
        }
    }
}

function saveMenuState() {
    if (flipSaveMenuState) {
        var aUL = document.getElementsByTagName("UL");
        for (var i = 0; i < aUL.length; i++) {
            var curUL = aUL[i];
            var curID = curUL.id ? curUL.id : i;
            if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=" + getMenuState(curUL) + ";";
        }
    }
}

function loadMenuState() {
    var aUL = document.getElementsByTagName("UL");
    for (var i = 0; i < aUL.length; i++) {
        var curUL = aUL[i];
        var curID = curUL.id ? curUL.id : i;
        if (curUL.className == "flipMenu") {
            var savedState = String(getCookie(cookiePrefix + curID));
            if (savedState != "") {
                aOpenItems = savedState.split(" ");
                putMenuState(curUL);
            }
        }
    }

    addEvent(window, "unload", saveMenuState);
}

function clearMenuState(flipMenuID) {
    if (typeof flipMenuID == "undefined") {
        var aUL = document.getElementsByTagName("UL");
        for (var i = 0; i < aUL.length; i++) {
            var curUL = aUL[i];
            var curID = curUL.id ? curUL.id : i;
            if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=;";
        }
    } else document.cookie = cookiePrefix + flipMenuID + "=;";
}

cookiePrefix = document.location.pathname + "_";

addEvent(document, "click", toggleFlip);
if (flipInitOnLoad) addEvent(window, "load", initFlip);

For det første kan jeg ikke få billeder til at blive vist!?

Men det vigtigste af alt så skal jeg finde den linie som gør at hele træet folder sig ud til at starte med. Det ser lidt dumt ud!

Er der nogen som kan hjælpe mig med det ?

Evt. linke mig til et andet script ?

Mvh.

Rasmus
Avatar billede soerenlyn Nybegynder
09. november 2007 - 15:01 #1
Der ligger en funktione der hedder:

function closeAllFlips(startElement) {
    setAllFlips(startElement, "closed");
}

Den kunne jeg forestille mig lukker dem alle sammen, så hvis du kalder den nederst i din kode ville det nok virke - jeg ved bare ikke vhilket element det er du skal overføre som parameter?
Avatar billede gunnernuhansen Nybegynder
09. november 2007 - 15:06 #2
Tak for dit hurtige svar! :)

Det ser da også ud til at være det rigtige. Men hvordan finder jeg så ud af hvilket element jeg skal overføre som parameter ? :D
Avatar billede gunnernuhansen Nybegynder
09. november 2007 - 15:08 #3
Nu har jeg dog lige prøvet at slette begge elementer og det lader ikke til at gøre noget som helst!

:(
Avatar billede w13 Novice
09. november 2007 - 15:13 #4
At slette begge elementer? Hvilke elementer? Og hvorfor sletter du dem?
Har du prøvet Soerenlyn's kode?
Avatar billede gunnernuhansen Nybegynder
09. november 2007 - 15:16 #5
Jeg ville bare se om der den hold op med at folde den hvis jeg slettede det hele!
Den kode er fra det script jeg bruger! Så det ændre ikke så meget ! Desværre

Ander gode forslag ?
Avatar billede w13 Novice
09. november 2007 - 15:24 #6
Jo, men prøvede du at kalde funktionen, som Søren foreslog?
closeAllFlips(startElement);

Det er dog umuligt for mig at sige, hvad startElement skal være. Mangler du ikke at vise os selve den del med "flips"'ene? Mangler der ikke noget af din kode?
Avatar billede soerenlyn Nybegynder
09. november 2007 - 15:28 #7
I koden et sted står der startElement.getElementsByTagName("ul")[0], så det er nok det element du har din menu (ul) liggende i..
Avatar billede gunnernuhansen Nybegynder
21. november 2007 - 14:53 #8
Tak gør det lige muligt at jeg kan give points!
Avatar billede soerenlyn Nybegynder
21. november 2007 - 21:16 #9
Hvem vil du give point til ?
Avatar billede w13 Novice
21. november 2007 - 21:46 #10
Opret du bare svar, Soeren.
Avatar billede soerenlyn Nybegynder
21. november 2007 - 23:04 #11
okay - så gør jeg det :)
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