Avatar billede alister_crowley Nybegynder
22. februar 2005 - 17:39 Der er 3 kommentarer og
1 løsning

innerText i Firefox ?

Hej

Sidder og forsøger at skrive noget html.
når jeg vil valdiderer min form, vil jeg istedet for en idiotisk alert() box, skrive en fin rød tekst i toppen.

Det skal foregå i <div id="formFejl"></div>
men jeg prøver at bruge document.all.formFejl.innerText = "fejl";
så siger Firefox at document.all ikke har nogle artributter , og IE laver noget uforståeligt fejl, viser "fejl" og skjuler det med det samme.

Nogen ide'er til hvordan dette kan løses ?
(og der skal være flere fejlmeddelser, altså varialbelt, så en <input> eller <textarea> duer heller ikke)
Avatar billede skovenborg Nybegynder
23. februar 2005 - 00:26 #1
For det første er document.all ikke en del af Firefox's DOM - det er en IE-ting, og jeg vil anbefale at du bare vender dig af med at bruge den. Brug istedet document.getElementById("formFejl")

For det andet er innerText, som du også nok har fundet ud af, også en IE ting. Det nærmeste du kommer i Firefox er propertien textContent, som opfører sig på samme måde. Dog er det bedre bare at bruge innerHTML, som virker i begge browsere, så slipper du for at teste bøvle med det.

Altså alt i alt bør din javascript-sætning se nogenlunde sådan ud:
document.getElementById("formFejl").innerHTML = "fejl";
Avatar billede alister_crowley Nybegynder
23. februar 2005 - 01:03 #2
Jep, det kan jeg godt se. Det virker perfekt.

Den bog jeg har lånt sider at document.all var lavet til IE 4.0 så jeg tænke at den måske var blevet indført i gecko siden.

Men jeg kan godt se at det andet virker bedre, og virker også mere fornurftigt kodemæsssigt.

Læg en svar, tak :)
Avatar billede skovenborg Nybegynder
23. februar 2005 - 01:07 #3
værgso' da :-)

Det skal måske siges at document.getElementById (som er en del af den officielle W3C DOM standard), først blev indført i IE5. Så skal du have IE4 med kan man lave en lille funktion til at hente objekter med:
function getObj(ID) {
    if (document.getElementById) {return document.getElementById(ID);}
    else if (document.all) {return document.all[ID]);}
    else {return null;}
}
eller noget i den stil. Så kunne du fx skrive:
getObj("formFejl").innerHTML = "fejl";

Det skal så igen siges at innerHTML heller ikke virkede i IE4 (så vidt jeg kan huske), så i dette tilfælde giver det ikke rigtig mening. Men måske til en anden gang da ;-)
Avatar billede alister_crowley Nybegynder
23. februar 2005 - 01:22 #4
hehe, kan godt godt være :)
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