Avatar billede margitbork Nybegynder
13. november 2009 - 10:50 Der er 5 kommentarer

CheckBox vises ikke når Div gøres visible...

Jeg er ved at lave en side hvor der skal være en træstruktur, som kan åbnes og lukkes ved klik på punkterne.

Jeg har det problem at til hvert punkt hører en checkbox og den bliver først synlig ved efterfølgende udvidelse af træet.
Det virker som det skal i firefox, men ikke i IE

Nogen bud på hvad der er galt ? eller hvordan man omgåes problemet ?


Jeg har forsøgt med explicit at sætte mine checkbox'e visible, men det hjælper ikke. Hvis jeg kører en alert samtidig med
kommer checkboksene derimod frem !!?!!

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

        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="Content-Language" content="da">
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
       
       
        <script type="text/javascript"><!--
           
            function displayCheckBox(elementID){
                // alert(elementID);
                var visibility = document.getElementById(elementID).style.visibility;
                var newvis = 'visible';
                if(visibility=='visible'){
                    newvis='hidden';
                }   
                document.getElementById(elementID).style.visibility=newvis;
            }
           
            function toggleDivImpl(divID){
                var visibility = document.getElementById(divID).style.visibility;
                var newvisibility = 'hidden';
                var position='absolute'
                if(visibility=='hidden'){
                    newvisibility='visible';
                    position='relative'
                }
                document.getElementById(divID).style.visibility=newvisibility;
                document.getElementById(divID).style.position=position;
            }
           
            // categories list
           
            var category_1009=new Array('1013','1014');
            var name_1009='subMail2';
           
            var category_1004=new Array('1008','1009');
            var name_1004='Mail';
           
            var category_1008=new Array('1011','1012');
            var name_1008='subMail1';
           
            var category_1003= new Array();
            var name_1003='WebClient';
           
            var category_1002= new Array();
            var name_1002='FTP';
           
            var category_1001=new Array('1002','1004','1003');
            var name_1001='EDI-trafik';
           
           
           
           
           
            function toggleDiv(divID){
                toggleDivImpl("div_"+divID);
           
                var childArray = eval('category_'+divID);
                for(var i=0; i<childArray.length; i++){
                    var childID = childArray[i];
                    displayCheckBox("check_"+childID);
                }   
            }
           
           
       
       
        -->
        </script>

    </head>
    <body>
        <table>
            <tr>
                <td>   
                    <div>
                        <input type='checkbox' name='check_1001' id='check_1001'/><span onClick="java script:toggleDiv('1001');">EDI-trafik</span>
                        <div name='div_1001' id='div_1001' style='visibility:hidden; Z-INDEX: 104; POSITION: absolute;padding-left:20px;'>
                            <input type='checkbox' name='check_1002' id='check_1002'/>FTP<br>
                            <input type='checkbox' name='check_1004' id='check_1004'/><span onClick="java script:toggleDiv('1004');">Mail</span>
                            <div name='div_1004' id='div_1004' style='visibility:hidden; Z-INDEX: 104; POSITION: absolute;padding-left:20px;'>
                                <input type='checkbox' name='check_1008' id='check_1008'/>subMail1<br>
                                <input type='checkbox' name='check_1009' id='check_1009'/>subMail2
                            </div><br>
                            <input type='checkbox' name='check_1003' id='check_1003'/>WebClient
                        </div>
                    </div>
                </td>
            </tr>
        </table>
    </body>
</html>

SLUT
Avatar billede qcaze Nybegynder
13. november 2009 - 11:37 #1
Prøv med display:block; (og display:none; hhv.) i stedet for visibility:hidden;
Avatar billede margitbork Nybegynder
13. november 2009 - 12:03 #2
Tak for tippet - men det hjalp desværre ikke. Kan du få det til at virke hos dig ?
Margit
Avatar billede qcaze Nybegynder
13. november 2009 - 12:12 #3
Har desværre ikke tid til at afprøve, ville bare lige foreslå det. Prøv evt. i en anden version af IE, for hvis det er en specifik bug i den version du kører, skal der muligvis et "hack" til. Håber du finder en løsning :-) God weekend!
Avatar billede margitbork Nybegynder
13. november 2009 - 12:28 #4
Hurra jeg har fundet en "workaround".
Efter jeg har sat min checkbox's visibility, kalder jeg focus og derefter blur på den. Og så bliver den åbenbart synlig - Det virker, jeg ved ikke hvorfor, men det gør det...HURRA
Margit

Her er koden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
   
        <title>IBM eC ServiceCenter - ec Admin</title>
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="Content-Language" content="da">
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <meta http-equiv="P3P" content='CP="NON DSP OTPa OUR NOR UNI"'>
       
       
        <script type="text/javascript"><!--
           
            function displayCheckBox(elementID, newvis){
                var box = document.getElementById(elementID);
                box.style.visibility=newvis;
                if(newvis=='visible'){
                    box.focus();       
                    box.blur();       
                }
            }
           
            function toggleDivImpl(divID){
                var divobj = document.getElementById(divID);
                var displayblock = divobj.style.display;
               
                var newvisibility = 'visible';
                var position='relative'
                var display='block';   
                if(displayblock=='block'){
                    position='absolute'
                    newvisibility='hidden';
                    display='none';
                }
               
              divobj.style.position=position;
                divobj.style.display=display;

                return newvisibility;
            }
           
            // categories list
           
            var category_1009=new Array('1013','1014');
            var name_1009='subMail2';
           
            var category_1004=new Array('1008','1009');
            var name_1004='Mail';
           
            var category_1008=new Array('1011','1012');
            var name_1008='subMail1';
           
            var category_1003= new Array();
            var name_1003='WebClient';
           
            var category_1002= new Array();
            var name_1002='FTP';
           
            var category_1001=new Array('1002','1004','1003');
            var name_1001='EDI-trafik';
           
           
           
           
           
            function toggleDiv(divID){
                var newvis = toggleDivImpl("div_"+divID);
        //        alert('');
                var childArray = eval('category_'+divID);
                for(var i=0; i<childArray.length; i++){
                    var childID = childArray[i];
                    displayCheckBox("check_"+childID, newvis);
                }   
               
            }
   
        -->
        </script>

    </head>
    <body>
        <table>
            <tr>
                <td>   
                    <div>
                        <input type='checkbox' name='check_1001' id='check_1001'/><span onClick="java script:toggleDiv('1001');">EDI-trafik</span>
                        <div name='div_1001' id='div_1001' style='display:none; Z-INDEX: 104; POSITION: absolute;padding-left:20px;'>
                            <input type='checkbox' name='check_1002' id='check_1002'/>FTP<br>
                            <input type='checkbox' name='check_1004' id='check_1004'/><span onClick="java script:toggleDiv('1004');">Mail</span>
                            <div name='div_1004' id='div_1004' style='display:none; Z-INDEX: 104; POSITION: absolute;padding-left:20px;'>
                                <input type='checkbox' name='check_1008' id='check_1008'/>subMail1<br>
                                <input type='checkbox' name='check_1009' id='check_1009'/>subMail2
                            </div><br>
                            <input type='checkbox' name='check_1003' id='check_1003'/>WebClient
                        </div>
                    </div>
                </td>
            </tr>
        </table>
    </body>
</html>
Avatar billede margitbork Nybegynder
13. november 2009 - 13:03 #5
Det er faktisk nok at kalde focus og blur på mit div-element efter det er blevet sat til display='block'.
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