25. maj 2007 - 20:12Der er
18 kommentarer og 2 løsninger
appendChild fungerer ikke
Hej Eksperter.
Hvordan kan det være, at følgende kode ikke har effekt: ------------------------------------- alert('1'); newModul = document.createElement("img"); newModul.setAttribute("title","fed"); newModul.setAttribute("src","components/bold/images/bold_dk.gif"); newModul.setAttribute("onclick","ExecCommand('Bold',false);"); newModul.setAttribute("onmouseover","this.style.backgroundImage='url(skins/windows/hover.gif)';"); newModul.setAttribute("onmouseout","this.style.backgroundImage='';"); document.getElementById("tools").appendChild(newModul); alert('2'); ----------------------------------- De 2 alerts er en lille test. Den første vises, det gør den anden ikke.. Og den virker først, når jeg fjerner "document.getElementById("tools").appendChild(newModul);". Og af en eller anden grund også, når jeg retter denne til: "document.getElementsByTagName("head")[0].appendChild(newModul);"
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
scheisse.. ja, ikke engang: alert('1'); alert(document.getElementById("tools").id); alert('2'); virker.. den stopper efter 1eren.. hmm, kigger lige lidt på det..
Jeg laver en texteditor i JavaScript og ville gerne inkludere moduler fra en mappe kaldet "components" så automatisk som muligt. Det spurgte jeg så om her på Eksperten og fik følgende kode: --------------------------- var moduls = Array("bold","italic","underline");
for (i=0;moduls.length>i;i++) { newModul = document.createElement("script"); newModul.setAttribute("type","text/javascript"); newModul.setAttribute("src","components/" + moduls[i] + "/" + moduls[i] + ".js"); document.getElementsByTagName("head")[0].appendChild(newModul); } --------------------------- Men jeg synes ikke det virker, når jeg retter til andet end "getElementsByTagName("head")[0]".. :(
I hvert fald inkluderer denne kode fint til header.. Men jeg kan jo så ikke rigtig lægge alle disse inkluderede i en funktion, vel?
Doh.. Hvis jeg nu bare kører denne inkluderingskode til sidst i koden og ikke lige efter head'er.. :P Så kunne det jo være, den kendte andre elementer end head.. prøver lige :)
Ja, nu har jeg så fået den ind i "tools", men den ene ting er, at koden ikke længere er ligeglad, hvis moduler ikke findes (den brokker sig ret meget), og hverken onclick, onmouseover, eller onmouseout reagerer.. :S
Ja, tænk engang: elementer skal findes før de kan bruges. Du får vel nogle fejl - og så kan du tage dem derfra. getElementById aflevere en null, hvis elementet ikke findes.
-- forhåbentlig har du valgt en grundlæggende doctype, der understøtter 'den skøre snappers' måde at lave event-tildelinger på, men ellers er det jo ikke muligt at komme uden om egentlige 'xml-agtige' tildelinger med addEventListener/attachEvent-ting !-)
'addEventListener/attachEvent-tingen' er nu ikke spor XML-agtig. De seneste små 10 år har det været den måde, vi bør bruge event-listeners på. addEventListener hører til i DOM Level 1.
Hvis vi - som tilfældet burde være - fik en DOM-node returneret med document.getElementById, er det tilmed den eneste måde, vi kan sætte en listener på.
I stedet får vi returneret en 'hDtOmMl-eNlOeDmEent' ... en bastard mellem et HTML-element objekt og en DOM-node. Dét er årsagen til, at eksemplerne i (26/05-2007 22:59:10) på trods af standarderne stadig virker =)
/mvh </bole>
Synes godt om
Ny brugerNybegynder
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.