Avatar billede callisen Nybegynder
28. juli 2006 - 12:25 Der er 13 kommentarer og
1 løsning

HJÆLP, kan ikke fjerne en tyk border i undermenuerne (IE)

Jeg har lavet en menu til IE, og den virker fint MEN MEN når jeg benytter billeder i undermenuerne kommer der en tyk blå border rundt om alle billeder i undermenuen. Hvis det hjælper nogen er den blå border sort i FireFox.

Det er nok en lille ting der går galt, men jeg håber der er nogen der kan hjælpe.


Her er den kode der laver undermenuen.

function submenuTest(arraySubImg, arrayOfSubHref, string)

    var mytable=document.getElementById(string);
    mytablebody = document.createElement("TBODY");
    for(j=0;j<arraySubImg.length;j++) {
        mycurrent_row=document.createElement("TR");
        for(i=0;i<1;i++) {
            mycurrent_cell=document.createElement("TD");
            var lnk = document.createElement("A");
            lnk.setAttribute("href", arrayOfSubHref[j]);
                lnk.onclick = function()
                {
                    if(this.getAttribute('href') == "Områdefornyelse.htm"){
                        frames['content'].location.href = "Områdefornyelse.htm";
                    }else if(this.getAttribute('href') == "Udlejningsejendomme.htm"){
                        frames['content'].location.href = "Udlejningsejendomme.htm";
                    }else if(this.getAttribute('href') == "EjerOgAndelsboliger.htm"){
                        frames['content'].location.href = "EjerOgAndelsboliger.htm";
                    }else if(this.getAttribute('href') == "Erhverv.htm"){
                        frames['content'].location.href = "Erhverv.htm";
                    }else if(this.getAttribute('href') == "Fælles.htm"){
                        frames['content'].location.href = "Fælles.htm";
                    }else if(this.getAttribute('href') == "Friarealer.htm"){
                        frames['content'].location.href = "Friarealer.htm";
                    }else if(this.getAttribute('href') == "ForenkletProces.htm"){
                        frames['content'].location.href = "ForenkletProces.htm";
                    }else if(this.getAttribute('href') == "raadgivningAfBygherren.htm"){
                        frames['content'].location.href = "raadgivningAfBygherren.htm";
                    }else if(this.getAttribute('href') == "Partnerskaber.htm"){
                        frames['content'].location.href = "Partnerskaber.htm";
                    }else if(this.getAttribute('href') == "OrganiseringOgDrift.htm"){
                        frames['content'].location.href = "OrganiseringOgDrift.htm";
                    }else if(this.getAttribute('href') == "IdeerFraBorgere.htm"){
                        frames['content'].location.href = "IdeerFraBorgere.htm";
                    }else{
                        frames['content'].location.href = "ErrorLink";
                    }               
                    return false;
                }
            lnk.appendChild(arraySubImg[j]);
            mycurrent_cell.appendChild(lnk);
            mycurrent_row.appendChild(mycurrent_cell);           
        }
        mytablebody.appendChild(mycurrent_row);
    }
    mytable.appendChild(mytablebody);
}


EKS. på en del af HTML filen der bliver ændret:

                        <div id="submenu">
                            <table class="menu" id="subByforny_Raadgiv" width="120" cellborder="0" cellpadding="0" cellspacing="0">
                            </table>
                        </div>
Avatar billede callisen Nybegynder
28. juli 2006 - 12:29 #1
Håber der er nogen der kender til problemet :-)
Avatar billede michael_stim Ekspert
28. juli 2006 - 12:32 #2
lnk.setAttributes('border','0');
Avatar billede michael_stim Ekspert
28. juli 2006 - 12:33 #3
lnk.setAttribute('border','0');
Der var lilge et s for meget
Avatar billede mclemens Nybegynder
28. juli 2006 - 12:46 #4
Hjælper det med dette i din css fil?
#submenu a img{border:0px;}
Avatar billede mclemens Nybegynder
28. juli 2006 - 12:58 #5
Umiddelbart virker michael stim's forslag måske også...
- men jeg ville måske mere have sagt lnk.style.border="0px";
... årsag: border er en forældet html attribut - css er mere nutidigt

... men, igen når jeg analyserer er lnk et a tag der er oprettet
... der bør vel så oprettes et img tag der appendes ind i a tagget
og så tildeles det appendede img object style tildelingen istedet ...
men, tror som sagt at du kan løse det direkte i dit stylesheet...
Avatar billede callisen Nybegynder
28. juli 2006 - 13:11 #6
lnk.setAttribute('border','0');
Virker ikke det har jeg prøvet. Jeg har også prøvet det i HTML filen og det virker heller ikke aner ikke hvorfor?
Avatar billede callisen Nybegynder
28. juli 2006 - 13:12 #7
Hvorfor virker #submenu a img{border:0px;}?
Avatar billede callisen Nybegynder
28. juli 2006 - 13:14 #8
mclemens
Du havde en ide til at gøre det direkte fra javascript filen noget med
lnk.style.border="0px";

kan du give et eksempel?
Avatar billede callisen Nybegynder
28. juli 2006 - 13:17 #9
Det var nemlig det jeg oprindelig gerne ville.

Nu når jeg tænker over det så glemte jeg #submenu a img jeg skrev bare #submenu da jeg prøvede at gøre det fra css filen. Så var det jo klart jeg ikke kunne få det til at virke fa CSS filen før.
Avatar billede mclemens Nybegynder
28. juli 2006 - 13:45 #10
Det eksempel du kom med er ikke lige umiddelbart
gennemskueligt for mig ... men her er et simpelt eksempel:



<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>
<script type="text/javascript">
function submenuTest(string)
{
    var mytable=document.getElementById(string);
    lnk= document.createElement("a");
lnk.href="http://www.eksperten.dk";

imgs=document.createElement("img");
imgs.src="http://www.eksperten.dk/img/elogo.png";

            lnk.appendChild(imgs);

    mytable.appendChild(lnk);
}

window.onload=function(){submenuTest("submenu");}

</script>
</head><body>
                        <div id="submenu">

                        </div>

</body></html>






vs.





<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>
<script type="text/javascript">
function submenuTest(string)
{
    var mytable=document.getElementById(string);
    lnk= document.createElement("a");
lnk.href="http://www.eksperten.dk";

imgs=document.createElement("img");
imgs.src="http://www.eksperten.dk/img/elogo.png";






imgs.style.border="0px";








            lnk.appendChild(imgs);

    mytable.appendChild(lnk);
}

window.onload=function(){submenuTest("submenu");}

</script>
</head><body>
                        <div id="submenu">

                        </div>

</body></html>
Avatar billede callisen Nybegynder
28. juli 2006 - 14:01 #11
OK jeg skulle bare tilføje

imgs=document.createElement("img");
imgs.src="http://www.eksperten.dk/img/elogo.png";

NB ved du om der er noget man skal være opmærksom på hvis man vil have en sådan menu til at virke i en anden browser. Den virker fx. i FireFox men er bare for langsom?
Avatar billede mclemens Nybegynder
28. juli 2006 - 16:44 #12
Det varierer vel lidt af scriptet ... hvis vi laver
noget i denne stil får jeg følgende målinger:


5688ms. i Firefox
4609ms. i IE


men med dette quick array istedet:

for(i=1;i<50;i++)menulinks[i]=""+menulinks[0];
for(i=1;i<50;i++)menupics[i]=""+menupics[0];

31ms. i Firefox
47ms. i IE





<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta

http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

var submenu,starttime;

menulinks=["http://www.ekperten.dk"];
menupics=["test.gif"];

for(i=1;i<5000;i++)menulinks[i]=""+menulinks[0];
for(i=1;i<5000;i++)menupics[i]=""+menupics[0];



function submenuTest(){

  for(i=0;i<menulinks.length;i++){

    lnk= document.createElement("a");
    lnk.href=menulinks[i];

    imgs=document.createElement("img");
    imgs.src=menupics[i];
    imgs.style.border="0px";

    lnk.appendChild(imgs);

    submenu.appendChild(lnk);

  }

  tmp=new Date();
  alert(tmp.getTime()-starttime);

}



window.onload=function(){
  tmp=new Date();
  starttime=tmp.getTime();
  submenu=document.getElementById("submenu");
  submenuTest();
}


</script>

</head><body>
<div id="submenu">a</div>
</body></html>




... men m.h.t. til faldgrupper i menuer
så er jeg ikke så langt inde i det ...
Avatar billede mclemens Nybegynder
28. juli 2006 - 16:50 #13
Uhm nu sidder jeg lige og læser scriptet igen ... du har en enorm stor onclick
til hvert link var det ikke bedre med et opkald til en funtion istedet?
... ikke testet eksempel:

lnk.onclick = function(){chklink(this);return false;}

og

function chklink(tn){
                    if(tn.getAttribute('href') == "Områdefornyelse.htm"){
                        frames['content'].location.href = "Områdefornyelse.htm";
                    }else if(tn.getAttribute('href') == "Udlejningsejendomme.htm"){
                        frames['content'].location.href = "Udlejningsejendomme.htm";
                    }else if(tn.getAttribute('href') == "EjerOgAndelsboliger.htm"){
                        frames['content'].location.href = "EjerOgAndelsboliger.htm";
                    }else if(tn.getAttribute('href') == "Erhverv.htm"){
                        frames['content'].location.href = "Erhverv.htm";
                    }else if(tn.getAttribute('href') == "Fælles.htm"){
                        frames['content'].location.href = "Fælles.htm";
                    }else if(tn.getAttribute('href') == "Friarealer.htm"){
                        frames['content'].location.href = "Friarealer.htm";
                    }else if(tn.getAttribute('href') == "ForenkletProces.htm"){
                        frames['content'].location.href = "ForenkletProces.htm";
                    }else if(tn.getAttribute('href') == "raadgivningAfBygherren.htm"){
                        frames['content'].location.href = "raadgivningAfBygherren.htm";
                    }else if(tn.getAttribute('href') == "Partnerskaber.htm"){
                        frames['content'].location.href = "Partnerskaber.htm";
                    }else if(tn.getAttribute('href') == "OrganiseringOgDrift.htm"){
                        frames['content'].location.href = "OrganiseringOgDrift.htm";
                    }else if(tn.getAttribute('href') == "IdeerFraBorgere.htm"){
                        frames['content'].location.href = "IdeerFraBorgere.htm";
                    }else{
                        frames['content'].location.href = "ErrorLink";
                    }             
}


eller måske kan det forkortes til:


lnk.onclick = function(){frames['content'].location.href=this.href;return false;}


men som sagt utestet... (ved ikke om valideringen på href navn var nødvendig ... )
Avatar billede mclemens Nybegynder
28. juli 2006 - 17:35 #14
Tak for point :o)
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

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