Avatar billede mikkelk Nybegynder
22. marts 2006 - 09:42 Der er 5 kommentarer og
1 løsning

Hmm...DOM node problem

Jeg har arbejdet med omskrivning af en wysiwyg editor og det fungerer sådan set fint, men...
Har en eventhandler der kalder nedenstående funktion når der klikkes et eller andet sted i dokumentet:

function SetActiveElementByEvent(evt){
    if (isIE) {
        strElement = evt.srcElement;
    } else {
        strElement = evt.target;
    }
    doConfigUpdates();
}
Her sættes strElement så til det element brugeren har klikket inde i - og det fungerer også fint til de fleste formål.
Kan redigere i strElement vha. attributter osv, men... hvis jeg nu forsøger nedenstående i IE:

function RemoveElement() {
    var newElement = document.createElement("SPAN");
    newElement.innerHTML = strElement.innerHTML;
    strElement.parentNode.replaceChild(newElement, strElement);
}

Så får jeg fejlen: Invalid argument

Det virker som om IE ikke helt opfatter strElement som en node, hvordan kan det være? Og hvordan får jeg rettet det?
Avatar billede roenving Novice
22. marts 2006 - 16:31 #1
-- men hele konstruktionen er da mærkelig, for hvorfor bruge dom-metoder, når du bruger ikke-dom properties som innerHTML ?-)

-- og, har du leget så meget med det, at du kan pege på, hvilket argument, der er invalidt ?o]
Avatar billede mikkelk Nybegynder
22. marts 2006 - 16:35 #2
Ja, ok... innerHTML var en hurtig løsning for at teste det...

Og hvad mener du med om jeg kan pege på hvilket argument der er invalidt?
Avatar billede mikkelk Nybegynder
22. marts 2006 - 16:42 #3
var newElement = document.createElement("SPAN");
    newElement.appendChild(strElement.firstChild);
    strElement.parentNode.replaceChild(newElement, strElement);
Avatar billede mikkelk Nybegynder
22. marts 2006 - 17:02 #4
Well...
fandt en løsning der virkede...
function RemoveElement() {
    var newElement = document.createElement("SPAN");
    var count = strElement.childNodes.length;
    for (i=0; i < count; i++)
    {
        strElement.parentNode.insertBefore(strElement.firstChild, strElement);
    }
}
Avatar billede mikkelk Nybegynder
22. marts 2006 - 17:03 #5
hov...
function RemoveElement() {
    var count = strElement.childNodes.length;
    for (i=0; i < count; i++)
    {
        strElement.parentNode.insertBefore(strElement.firstChild, strElement);
    }
}
Avatar billede mikkelk Nybegynder
22. marts 2006 - 17:03 #6
og det var et svar...
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