Avatar billede mailand Nybegynder
25. januar 2005 - 16:04 Der er 3 kommentarer

div'er med baggrund kommer ikke frem i ie

Hej

Jeg har, synes jeg selv, en lidt spøjs fejl her...

Funktionen fungerer efter planen i Firefox, men det går galt i IE...

Meningen er, der skal genereres en hel del lag, som er nestet inde i hinanden, og via. z-index, skal de positioneres ovenpå hinanden.

Jeg kan genskabe konstruktionen ved at skrive html'en direkte ind og styre den i min css - og det skøre er ligeledes, det fungerer fint i Firefox, men i IE bliver kun oBoxContent placeret og vist, men oBoxShadow bliver ikke konstrueret - eller det gør den, men dens childs bliver ikke vist.

Kan IE ikke håndtere objekters objekter i DOM/JS ?

Min funktion (i uddrag):

function showShadowBox(iWidth, iLeft, iTop, sText){
    var oBody = document.getElementsByTagName("BODY")[0];
   
    if (oBody) {
        var oBoxShadow = document.createElement("DIV");
        var oBoxContent = document.createElement("DIV");
       
        // add properties, child elements and text to oBoxContent
        //oBoxContent.setAttribute("id",sBoxId);
        oBoxContent.setAttribute("id", "boxContent");
        oBoxContent.style.left = iLeft + "px";
        oBoxContent.style.top = iTop + "px";
        oBoxContent.style.width = iWidth + "px";
        oBoxContent.innerHTML = "<div class='content'>" + sText + "</div>";
       
        // add element to oBoxContainer
        oBody.appendChild(oBoxContent);
       
        // get height of box
        iHeightOfContentBox = oBoxContent.clientHeight;   
           
        // add properties and child elements to oBoxShadow
        oBoxShadow.setAttribute("id","boxShadow");
        oBoxShadow.style.top = iTop - iNegativeMarginDropShadow + "px";
        oBoxShadow.style.left = iLeft - iNegativeMarginDropShadow + "px";
        oBoxShadow.style.height = iHeightOfContentBox + iSizeOfDropShadow + "px";
        oBoxShadow.style.width = iWidth + iSizeOfDropShadow + "px";
       
        // create child elements to oBoxShadow
        var oShadowRepeatTop = document.createElement("DIV");
        oShadowRepeatTop.setAttribute("class", "shadowRepeatTop");
        oShadowRepeatTop.style.left = iWidthOfShadowCorner + "px";
        oShadowRepeatTop.style.width = iWidth + iSizeOfDropShadow - iWidthOfShadowCorner - iWidthOfShadowCorner + "px";
        oShadowRepeatTop.style.height = iHeightOfShadowCorner + "px";
        oBoxShadow.appendChild(oShadowRepeatTop);
       
        // add element to oBoxContainer
        oBody.appendChild(oBoxShadow);
       
        return false;
    }
}




#Mailand
Avatar billede olebole Juniormester
25. januar 2005 - 18:02 #1
<ole>

Hvorfor bruge DOM? Du bruger alligevel innerHTML - så kan du ligeså godt skrive en hel streng med dine divs ind i body'en. Det bliver det ikke dårligere af  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
25. januar 2005 - 18:28 #2
... det her fungerer jo helt fint:

<script type="text/JavaScript">
var iNegativeMarginDropShadow = 10;
var iSizeOfDropShadow = 2;
var iWidthOfShadowCorner = 5;
var iHeightOfShadowCorner = 5;
function showShadowBox(iWidth, iLeft, iTop, sText){
    var oBody = document.getElementsByTagName("BODY")[0];
   
    if (oBody) {
        var oBoxShadow = document.createElement("DIV");
        var oBoxContent = document.createElement("DIV");
       
        // add properties, child elements and text to oBoxContent
        //oBoxContent.setAttribute("id",sBoxId);
        oBoxContent.setAttribute("id", "boxContent");
        oBoxContent.style.left = iLeft + "px";
        oBoxContent.style.top = iTop + "px";
        oBoxContent.style.width = iWidth + "px";
        oBoxContent.innerHTML = "<div class='content'>" + sText + "</div>";
       
        // add element to oBoxContainer
        oBody.appendChild(oBoxContent);
       
        // get height of box
        iHeightOfContentBox = oBoxContent.clientHeight;   
           
        // add properties and child elements to oBoxShadow
        oBoxShadow.setAttribute("id","boxShadow");
        oBoxShadow.style.top = iTop - iNegativeMarginDropShadow + "px";
        oBoxShadow.style.left = iLeft - iNegativeMarginDropShadow + "px";
        oBoxShadow.style.height = iHeightOfContentBox + iSizeOfDropShadow + "px";
        oBoxShadow.style.width = iWidth + iSizeOfDropShadow + "px";
       
        // create child elements to oBoxShadow
        var oShadowRepeatTop = document.createElement("DIV");
        oShadowRepeatTop.setAttribute("class", "shadowRepeatTop");
        oShadowRepeatTop.style.left = iWidthOfShadowCorner + "px";
        oShadowRepeatTop.style.width = iWidth + iSizeOfDropShadow - iWidthOfShadowCorner - iWidthOfShadowCorner + "px";
        oShadowRepeatTop.style.height = iHeightOfShadowCorner + "px";
        oBoxShadow.appendChild(oShadowRepeatTop);
       
        // add element to oBoxContainer
        oBody.appendChild(oBoxShadow);
       
        return false;
    }
}
window.onload = function() {
    showShadowBox(400, 300, 100, "En tekst");
    alert(d.body.innerHTML)
}
</script>

- men hvis du positionerer dine indre divs 'absolute', får du jo vrøvl, da du så placerer dem delvist udenfor det yderst  :)
Avatar billede olebole Juniormester
25. januar 2005 - 18:30 #3
Oooops ... alert(d.body.innerHTML) skal naturligvis være alert(document.body.innerHTML)
- jeg har bare en 'var d=document' liggende i min default HTML-skabelon  ;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
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

IT Business Analyst

Capgemini Danmark A/S

AI/Data Engineer

Netcompany A/S

Network Engineer

Politiets Efterretningstjeneste

PET søger softwareingeniører til Ruslandsområdet