Avatar billede dotnewbi Juniormester
08. januar 2009 - 19:16 Der er 6 kommentarer og
1 løsning

problem med ie7

Hej eksperten,

Jeg har et script som laver en <ul> liste om til en treemenu og det virker fint i firefox, men i ie7 virker det ikke, de plus/minus knapper jeg sætter ind med javascript virker ikke? her er hele min kode:


var ParentArea = "none";
var SubPart = "none";
var dragDiv = "";
var Tree = "";

var imageFolder = "../ui/";
var plusImage = "wi_plus.gif";
var minusImage = "wi_minus.gif"
var blankImage = "wi_nothing.jpg";
var folderImage = "wi_file_on.jpg";
var dragOn = false;

var dragNode = "";
var dragCode = "";





function SetTree(id){
   
    Tree = document.getElementById(id);
   
    var PageItems = Tree.getElementsByTagName('LI');    // Get an array of all menu items
    for(var num=0;num<PageItems.length;num++){// for loop ............ 1
               
                var subpages = true;
                var temp = PageItems[num].getAttribute('subpages');
                if(!temp)temp = PageItems[num].subpages;
                if(temp=='false')subpages=false;
               
               
                var move = true;
                var temp = PageItems[num].getAttribute('move');
                if(!temp)temp = PageItems[num].move;
                if(temp=='false')move=false;
               
                var subItems = PageItems[num].getElementsByTagName('UL');
               
                var plusImg = document.createElement('IMG');
               
                if(subItems.length==0)
               
                {
                    plusImg.src = imageFolder + blankImage;
                   
               
                }else{
                   
                    plusImg.src = imageFolder + plusImage;
                    plusImg.setAttribute( "onclick", "toggleNodes(this.parentNode.id)");
                    plusImg.setAttribute( "onmousedown", "toggleNodes(this.parentNode.id)");
                    subItems[0].id = "ul" + PageItems[num].id ;
                    subItems[0].style.display = "none";
                   
                }
               
               
               
            var aTag = PageItems[num].getElementsByTagName('A')[0];
            aTag.id = 'nodeATag' + PageItems[num].id.replace(/[^0-9]/gi,'');
            aTag.setAttribute( "onclick", "toggleNodes(this.parentNode.id)");
            if(move)aTag.setAttribute( "onmousedown", "StartDrag(this.parentNode.id)");
            if(move)aTag.setAttribute( "onmouseup", "EndDrag(this.parentNode.id)");
            if(subpages == true)aTag.setAttribute( "onmouseover", "dropArea(this.parentNode.id)");
            if(subpages == true)aTag.setAttribute( "onmouseout", "endDropArea(this.parentNode.id)");
            PageItems[num].insertBefore(plusImg,aTag);   
           
           
            var checkbox =  document.createElement('INPUT');
            checkbox.setAttribute( "type", "checkbox" ); 
            PageItems[num].insertBefore(checkbox,aTag);
           
            var temp = PageItems[num].getAttribute('folderImage');
            if(!temp){
            defaultFolderImage= folderImage;
            }
            else{
            defaultFolderImage = temp;
            }
               
                       
                var folderImg = document.createElement('IMG');
                folderImg.src = imageFolder + defaultFolderImage;
                PageItems[num].insertBefore(folderImg,aTag);
               
               
            var sortImg = PageItems[num].getElementsByTagName('IMG')[2];
           
            if(subItems.length==0)
               
                {
                    sortImg.style.display = "none";
                   
               
                }else{
                   
                   
                    sortImg.setAttribute( "onclick", "sortNodes(this.parentNode.id)");
                   
                   
                }
               
    }// for loop ............ 1 end
   

                document.getElementById('ul' + PageItems[0].id).style.display = "block";
                thisNode = PageItems[0].getElementsByTagName('IMG')[0];
                thisNode.src = thisNode.src.replace(plusImage,minusImage);
               
    }

function StartDrag(node){
   
    dragOn = true;
    dragNote = node;
    var LIData = "";
    document.onmouseup = EndDrag();
    LIData += ' id=' + '"' + node + '" ';
   
    if(document.getElementById(node).getAttribute('subpages'))
    LIData += ' subpages=' + '"' + document.getElementById(node).getAttribute('subpages') + '" ';
   
    if(document.getElementById(node).getAttribute('move'))
    LIData += ' move=' + '"' + document.getElementById(node).getAttribute('move') + '" ';
   
   
    dragCode = "<li" + LIData + ">";
    dragCode += document.getElementById(node).innerHTML;
    dragCode += "</li>";
   
    //document.getElementById("dragContent").style.display = "block";
    //document.getElementById("dragContent").innerHTML = "<ul>" + dragCode + "</ul>";
   
   
   
    }
   
function EndDrag(){
    dragOn = false;
    document.getElementById("dragContent").style.display = "none";
    document.getElementById("dragContent").innerHTML = "";
   
    }   
   
function dropArea(node){

    if(dragOn == true){
   
   
   
    }

   
    }   
   
function endDropArea(node){



}


function toggleNodes(node){
   
    var id = 'ul' + node;
   
    thisNode = document.getElementById(node).getElementsByTagName('IMG')[0];
   
   
    var stat = document.getElementById(id).style.display;
       
    if(stat == "none"){
       
        document.getElementById(id).style.display = "block"
        thisNode.src = thisNode.src.replace(plusImage,minusImage);
       
        }else{
           
        document.getElementById(id).style.display = "none"   
        thisNode.src = thisNode.src.replace(minusImage,plusImage);           
        }
   
   
    }

function sortNodes(node){
   
    alert("sort");
    }
   
function collapseTree()
        {
               
        }
Avatar billede dotnewbi Juniormester
09. januar 2009 - 08:35 #1
det er testet og virker i firefox, safari, opera, sleipnir,flock, chrome og IE8 beta2. Men i IE7 og IE6 der folder treemenu'en sig ikke ud ?
Avatar billede olebole Juniormester
09. januar 2009 - 10:53 #2
<ole>

Når man bruger innerHTML, er det meget let at få overskrevet referencer og dynamisk satte event handlers - og så kan alt ske. På den anden side kunne det tyde på, det handler om din HTML kode, hvis det kun er i IE7, du har problemer.

Prøv at lægge et link til siden

/mvh
</bole>
Avatar billede dotnewbi Juniormester
09. januar 2009 - 12:56 #3
Avatar billede olebole Juniormester
11. januar 2009 - 15:33 #4
Den giver da fejl i alle browsere. Hvor er funktionen, du sætter som event handler i linjen:
    document.onmousemove = mouseMove;

Jeg kan ikke finde den  =)
Avatar billede dotnewbi Juniormester
12. januar 2009 - 14:53 #5
Det var en gamle en der ikke bliver brugt mere, den var ikke blevet slettet i den file jeg uploaded men nu ligger den nyeste der, som ikke fejler i andre browser end IE7 og IE6.
Avatar billede olebole Juniormester
12. januar 2009 - 16:33 #6
Jo, den fejler også i FF. De to billeder, der ikke kan vises i IE, kan heller ikke vises i FF. Det skyldes, at de ser sådan ud:
    <img src="images/">

- og det duer i hvertfald ikke til noget. Forskellen er bare, at FF slet ikke viser billeder, den ikke kan finde - mens IE viser et rødt kryds. Fejlen er dog begge steder  ;o)
Avatar billede dotnewbi Juniormester
13. juli 2011 - 22:57 #7
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