Avatar billede triple-x Nybegynder
23. oktober 2004 - 20:00 Der er 10 kommentarer og
1 løsning

dropdown som skal komme op af sig selv

hey eksperter

jeg har et problem, jeg har lavet om i et skript så det passer præcis efter mine behov, men er stødt ind i et problem som jeg ikke rigtig kan håndtere.

jeg skal have menuen til at forsvinde af sig selv når musen køres udenfor, istedet for man skal trykke på det øverste menupunkt istedet.
menuen kan ses her http://www.designstroke.dk/fixide/test/

og javascriptet ser således ud :

var currentMenu = null;

if (!document.getElementById)
    document.getElementById = function() { return null; }

function initializeMenu(menuId, dropdownId) {
    var menu = document.getElementById(menuId);
    var dropdown = document.getElementById(dropdownId);

    if (menu == null || dropdown == null) return;

    dropdown.onmouseover = function() {
        if (currentMenu) {
            currentMenu.style.visibility = "hidden";
            this.showMenu();
        }
    }
 
    dropdown.onmouseover = function() {
        if (currentMenu == null) {
            this.showMenu();
        }
        else {
            currentMenu.style.visibility = "hidden";
            currentMenu = null;
        }

        return false;
    }

    dropdown.showMenu = function() {
        menu.style.left = this.offsetLeft + "px";
        menu.style.top = this.offsetTop + this.offsetHeight + "px";
        menu.style.visibility = "visible";
        currentMenu = menu;
    }
}
Avatar billede skovenborg Nybegynder
23. oktober 2004 - 22:09 #1
prøv at tilføje:
    menu.onmouseover = function() {
        this.style.visibility = "visible";
        currentMenu = this;
    }
    menu.onmouseout = function() {
        this.style.visibility = "hidden";
        currentMenu = null;
    }
Avatar billede triple-x Nybegynder
23. oktober 2004 - 22:30 #2
synes ik rigtig det virker :(
skal det sidde et specielt sted?
Avatar billede skovenborg Nybegynder
23. oktober 2004 - 23:01 #3
nåja, det glemte jeg - det skal sidde indeni din
function initializeMenu(menuId, dropdownId) {
}
Avatar billede triple-x Nybegynder
23. oktober 2004 - 23:07 #4
nu spørger jeg sikkert rigtig dumt :) men sådan?
var currentMenu = null;

if (!document.getElementById)
    document.getElementById = function() { return null; }

function initializeMenu(menuId, dropdownId) {
    var menu = document.getElementById(menuId);
    var dropdown = document.getElementById(dropdownId
    menu.onmouseover = function() {
        this.style.visibility = "visible";
        currentMenu = this;
    }
    menu.onmouseout = function() {
        this.style.visibility = "hidden";
        currentMenu = null;
    }
    );

    if (menu == null || dropdown == null) return;

    dropdown.onmouseover = function() {
        if (currentMenu) {
            currentMenu.style.visibility = "hidden";
            this.showMenu();
        }
    }

    dropdown.onmouseover = function() {
        if (currentMenu == null) {
            this.showMenu();
        }
        else {
            currentMenu.style.visibility = "hidden";
            currentMenu = null;
        }

        return false;
    }

    dropdown.showMenu = function() {
        menu.style.left = this.offsetLeft + "px";
        menu.style.top = this.offsetTop + this.offsetHeight + "px";
        menu.style.visibility = "visible";
        currentMenu = menu;
    }
}
Avatar billede skovenborg Nybegynder
23. oktober 2004 - 23:13 #5
ikke helt - du har kommet til at sætte den indeni document.getElementById(dropdownId). Men det burde virke hvis du sætter den lige udenfor:
var menu = document.getElementById(menuId);
    var dropdown = document.getElementById(dropdownId);
    menu.onmouseover = function() {
        this.style.visibility = "visible";
        currentMenu = this;
    }
    menu.onmouseout = function() {
        this.style.visibility = "hidden";
        currentMenu = null;
    }
Avatar billede triple-x Nybegynder
23. oktober 2004 - 23:16 #6
var menu = document.getElementById(menuId);
    var dropdown = document.getElementById(dropdownId);
    menu.onmouseover = function() {
        this.style.visibility = "visible";
        currentMenu = this;
    }
    menu.onmouseout = function() {
        this.style.visibility = "hidden";
        currentMenu = null;
    }
    if (menu == null || dropdown == null) return;

    dropdown.onmouseover = function() {
        if (currentMenu) {
            currentMenu.style.visibility = "hidden";
            this.showMenu();
        }
    }

    dropdown.onmouseover = function() {
        if (currentMenu == null) {
            this.showMenu();
        }
        else {
            currentMenu.style.visibility = "hidden";
            currentMenu = null;
        }

        return false;
    }

    dropdown.showMenu = function() {
        menu.style.left = this.offsetLeft + "px";
        menu.style.top = this.offsetTop + this.offsetHeight + "px";
        menu.style.visibility = "visible";
        currentMenu = menu;
    }
}

Sådan :)
Avatar billede skovenborg Nybegynder
23. oktober 2004 - 23:30 #7
det ser sådan ud :-)
Avatar billede triple-x Nybegynder
23. oktober 2004 - 23:51 #8
smid et svar det virker :)

www.designstroke.dk/fixide/test/
Avatar billede skovenborg Nybegynder
24. oktober 2004 - 00:00 #9
super :-)
Avatar billede triple-x Nybegynder
24. oktober 2004 - 00:01 #10
jeg takker mange gange fordi du hjælper både her og i det andet spørgsmål.
Avatar billede skovenborg Nybegynder
24. oktober 2004 - 00:06 #11
det var så lidt :-)
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