Avatar billede karl-koder Nybegynder
13. februar 2008 - 18:58 Der er 10 kommentarer og
1 løsning

Gøre "tap" aktiv med javascript ?

Hejsa,

Jeg har følgende css, html og javascript jeg gerne vil have til at fungere så den "tab" der bliver klikket på bliver den aktive :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <style type="text/css">
        body
        {
            background:#fff;
            margin:0;
            padding:0;
            color:#000;
            font-family:Verdana;
            font-size:8pt;
            /*voice-family: "\"}\""; voice-family:inherit;*/
            font-size:small;
        }
        /*html>body {font-size:small;}*/

        #header
        {
            float:left;
            width:100%;
            background:#DAE0D2 url("bg.gif") repeat-x bottom;
            font-size:93%;
            line-height:normal;
        }
       
        #header ul
        {
            margin:0;
            padding:10px 10px 0;
            list-style:none;
        }
       
        #header li
        {
            float:left;
            background:url("left.gif") no-repeat left top;
            margin:1px;
            padding:0 0 0 9px;
        }
       
        #header a
        {
            float:left;
            display:block;
            background:url("right.gif") no-repeat right top;
            padding:5px 15px 4px 6px;
            text-decoration:none;
            font-weight:bold;
            color:#765;
        }
       
        /* Commented Backslash Hack
        hides rule from IE5-Mac \*/
        #header a {float:none;}
        /* End IE5-Mac hack */
        #header a:hover
        {
            color:#333;
        }
       
        #header .current
        {
            background-image:url("left_on.gif");
        }
       
        #header .current a
        {
            background-image:url("right_on.gif");
            color:#333;
            padding-bottom:5px;
        }
    </style>
    <script language="javascript">
        function setSearchOptions(idElement)
        {
            /* Total Tabs above the input field (in this case there are 3 tabs: web, images, videos) */
            tot_tab = 5;
            tab        = document.getElementById('tab'+idElement);
           
            for(i=1; i<=5; i++)
            {
                if(i==idElement)
                {
                    tab.setAttribute("class","current");
                }
                else
                {
                    document.getElementById('tab'+i).setAttribute("class","");
                }
            }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="header">
        <ul>
            <li id="tab1"><a href="#" onclick="java script:setSearchOptions(1);">Home</a></li>
            <li id="tab2" class="current"><a href="#" onclick="java script:setSearchOptions(2);">News</a></li>
            <li id="tab3"><a href="#" onclick="java script:setSearchOptions(3);">Products</a></li>
            <li id="tab4"><a href="#" onclick="java script:setSearchOptions(4);">About</a></li>
            <li id="tab5"><a href="#" onclick="java script:setSearchOptions(5);">Contact</a></li>
        </ul>
    </div>
    </form>
</body>
</html>

Håber der er en der kan hjælpe mig det sidste stykke vej ;o)

../
Avatar billede hr__hallandsen Nybegynder
13. februar 2008 - 19:48 #1
sæt

        currenttab = 2; //default tab
        function setSearchOptions(idElement)
        {
            document.getElementById("tab" + currenttab).className = "";
            document.getElementById("tab" + idElement).className = "current";
            currenttab = idElement;
        }

ind i script-tagget i stedet
Avatar billede karl-koder Nybegynder
13. februar 2008 - 19:55 #2
Det virker stadigt ikke, kan jeg have en fejl i min CSS ?
Avatar billede karl-koder Nybegynder
13. februar 2008 - 20:47 #3
Sorry my bad ;o) Det virkede da jeg fik slettet alt det gamle javascript Dooooh.

Smid et svar.

/..
Avatar billede roenving Novice
15. februar 2008 - 14:01 #4
-- og så er det verdens dårligste ide at skifte classname on-the-fly, da browseren så bliver nødt til at rekalkulere hele den visuelle visning, præcis som hvis dokumentet blev loadet påny ,-(
Avatar billede karl-koder Nybegynder
15. februar 2008 - 14:15 #5
Har du en anden idé til hvad jeg så kan gøre roenving ?
Avatar billede roenving Novice
15. februar 2008 - 14:23 #6
function setSearchOptions(idElement)
        {
            document.getElementById("tab" + currenttab).backgroundImage = "url(bg.gif)";
            document.getElementById("tab" + idElement).backgroundImage = "url(left_on.gif);";
            currenttab = idElement;
        }
Avatar billede karl-koder Nybegynder
15. februar 2008 - 15:30 #7
Da jeg har variabel længde på mine tabs og derfor har to billeder en left_on.gif og en right_on.gif, vil den med dit forslag så ikke kun sætte left_on.gif som baggrund ?
Avatar billede roenving Novice
15. februar 2008 - 15:39 #8
-- du skal selvfølgelig udvide scriptet, så det også dækker dine underklasser:

function setSearchOptions(idElement){
  var elm = document.getElementById("tab" + currenttab), st;
  elm.backgroundImage = "url(bg.gif)";
  var lnks = elm.getElementsByTagName("a");
  for(i=0,im=lnks.length;im>i;i++){
    st = lnks[i].style;
    st.backgroundImage = "url(right_on.gif)";
    st.color = "#333";
  }
  elm = document.getElementById("tab" + idElement);
  elm.backgroundImage = "url(left_on.gif);";
  var lnks = elm.getElementsByTagName("a");
  for(i=0,im=lnks.length;im>i;i++){
    st = lnks[i].style;
    st.backgroundImage = "";
    st.color = "";
  }
  currenttab = idElement;
}
Avatar billede karl-koder Nybegynder
15. februar 2008 - 15:45 #9
Jeg er desværre ikke ret skarp inden for javascript, men der er da noget at arbejde videre med så det vil jeg da lige teste ;o)
Avatar billede karl-koder Nybegynder
15. februar 2008 - 16:13 #10
Ok, det virker ikke helt efter hensigten. bg.gif benyttes som baggrund for en div hvori jeg har min ul liste og har til hensigt at at lave en streg i bunden af de ikke aktive tabs.

Jeg forsøgte mig så med :

function setSearchOptions(idElement){
  var elm = document.getElementById("tab" + currenttab), st;
  elm.backgroundImage = "url(tab-on-left.gif)";
  var lnks = elm.getElementsByTagName("a");
  for(i=0,im=lnks.length;im>i;i++){
    st = lnks[i].style;
    st.backgroundImage = "url(tab-on-right.gif)";
    st.color = "#999";
  }
  elm = document.getElementById("tab" + idElement);
  elm.backgroundImage = "url(tab-off-left.gif);";
  var lnks = elm.getElementsByTagName("a");
  for(i=0,im=lnks.length;im>i;i++){
    st = lnks[i].style;
    st.backgroundImage = "url(tab-off-right.gif)";
    st.color = "444";
  }
  currenttab = idElement;
}

Men når jeg klikker på de respektive tabs forsvinder det højre billede og det venstre forbliver som det ikke aktive.
Avatar billede karl-koder Nybegynder
20. februar 2009 - 01:29 #11
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