Avatar billede dotnewbi Juniormester
29. april 2008 - 13:59 Der er 6 kommentarer og
1 løsning

problem med insertAdjacentHTML

Hej eksperter,

Jeg har en prototype function som jeg ikke kan få til at virke her er min kode:

(Html fil)

<html>
    <head>
        <title></title>
        <style>
        textarea{
        display:block;
        }
        </style>
        <script type="text/javascript" src="wi_test.js"></script>
        <script type="text/javascript">
        Make.MyChanges('content');
        </script>
       
</head>
<body>
   
   
    <textarea id="content"></textarea>
   
</body>
</html>

(javascript fil)

Make= {
   
        MyChanges: function(id) {
       
        var myinput= "<b>Dette er en indsat text</b>";
        var doc=document.getElementById(id);
       
        var textarea = $(id);   
       
        if(textarea == null) {
            alert("Det er ingen TEXTAREA med id'et :" + id );
            return;
        }
       
        textarea.style.display = "none";
               
        doc.insertAdjacentHTML("afterEnd", myinput);
           
        }
   
}

functionen bliver kaldt men textarea'et bliver aldrig skjult og myinput variablen bliver aldrig indsat.
Avatar billede roenving Novice
29. april 2008 - 14:15 #1
Hvorfor henter du det samme element med to forskellige metoder (brug den første ?-)

-- og så er indsættelse af html i en tekststreng lodret stridende mod hele grundlaget for sgml (og x(ht)ml !-)

-- og insertAdjacentHTML dur måske så ikke lige i så mange browsere ...

_Meget_ mere crossbrowser:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title></title>
        <style>
        textarea{
        display:block;
        }
        </style>
        <!--script type="text/javascript" src="wi_test.js"></script-->
        <script type="text/javascript">
        Make= {
   
        MyChanges: function(id) {
       
        var myinput= "Dette er en indsat text";
        var doc=document.getElementById(id);
       
        if(doc == null) {
            alert("Det er ingen TEXTAREA med id'et :" + id );
            return;
        }
        var newElm = document.createElement("b");
        newElm.appendChild(document.createTextNode(myinput));
       
        document.body.appendChild(newElm);
        doc.style.display = "none";
           
        }
   
}
        window.onload = function() {Make.MyChanges('content');};

        </script>
       
</head>
<body>
   
   
    <textarea id="content"></textarea>
   
</body>
</html>

-- men jeg har kun lige vist dig ideen, der er mget, jeg ikke har behandlet, f.eks. er brugen af document.body ikke særlig fremtidssikret !-)
Avatar billede dotnewbi Juniormester
29. april 2008 - 14:39 #2
din kode virker fint, der er dog det problem at ideen med scriptet er at den skal udskifte textarea'et men en block html. hvor din kode indsætter det nye element til sidst i body tag'et.Hvad sker der med document.body siden det ikke er fremtidssikret!
Avatar billede roenving Novice
29. april 2008 - 14:45 #3
document.body hører til i html3.2 DOM (document object model), og er gyldig i nogle html4 versioner (men såvidt jeg husker allerede deprecated i html4.01 strict !-)

-- skal du udskifte noden, så:

...

        doc.parentNode.replaceChild(newElm,doc);

...
Avatar billede dotnewbi Juniormester
29. april 2008 - 14:55 #4
Det virker perfect tak ! smid et svar. vedr. document.body ved du så hvad der evt. aføser det.
Avatar billede roenving Novice
29. april 2008 - 15:01 #5
Den helt sikre er:

document.documentElement.getElementsByTagName("body")[0]

Velbekomme '-)
Avatar billede roenving Novice
29. april 2008 - 15:02 #6
Hov, behold selv langt de fleste point !-)
Avatar billede roenving Novice
29. april 2008 - 15:19 #7
-- og tak for point ;~}
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