Avatar billede w13 Novice
16. maj 2005 - 17:26 Der er 15 kommentarer og
1 løsning

Mindre fejl i JavaScript

Hej Eksperter...

Jeg har netop sat en farvekodegenerator ind på min hjemmeside, så brugere uden forstand på HTML alligevel kan finde gode farver. Der opstår dog en fejl i koden (tilsyneladende koden på siden "linkrotation" og ikke i selve farvevælgeren) - koden virker fint, men det er ret irriterende med den fejl, som angives i status-linjens venstre hjørne.
Fejlen er: 'document.opretkode.bgcolor' er null eller ikke et object.

Se det selv her: http://www.2biaz.dk/linkrotation.asp

Jeg har desværre ingen forstand på JavaScript, så derfor spørger jeg jer: Hvad er der dog galt?

Mvh.
W13
Avatar billede roenving Novice
16. maj 2005 - 17:35 #1
Der findes slet ikke den slags attributter til et form-tag, så du skal gøre det anderledes, f.eks.

function setColor(a) {
    document.opretkode.style.backgroundColor=a;
    oldColor=a;
}
function setColor2(a) {
    document.opretkode.style.color=a;
    oldColor=a;
}
Avatar billede roenving Novice
16. maj 2005 - 17:35 #2
Avatar billede w13 Novice
16. maj 2005 - 17:47 #3
Nej, jeg tror, du misforstår mig. Koden skulle ændre indholdet af textbox'ene, ikke baggrunds-/tekst-farver.
Avatar billede roenving Novice
16. maj 2005 - 17:57 #4
Tjah, så kunne man forestille sig, at det er den omvendte ting, nemlig at den slags attributter fandtes/findes på andre elementer, så prøv at give dem andre navne, f.eks. kodebgcolor !-)
Avatar billede w13 Novice
16. maj 2005 - 18:02 #5
Desværre, virker stadig ikke... Og den sagde det desuden også, da jeg prøvede med din kode før. http://www.2biaz.dk/linkrotation.asp
Avatar billede roenving Novice
16. maj 2005 - 18:09 #6
Nåeh, jaeh, du bruger jo også xhtml, så kan du ikke benytte dig af name-attributten ...

Ændr name på felterne til id (eller kopier !-) og:

function setColor(a) {
    document.getElementById('bgcolor').value=a;
    oldColor=a;
}
function setColor2(a) {
    document.getElementById('textcolor').value=a;
    oldColor=a;
}
Avatar billede w13 Novice
16. maj 2005 - 18:21 #7
Ked af at sige det... Men nu er fejlen bare "document.getElementById('kodebgcolor')" er null eller ikke et objekt". Forstår det simpelthen ikke :(
Avatar billede roenving Novice
16. maj 2005 - 18:27 #8
Argh, du kalder jo også setColor før formen ...

1. byt rundt på formen og scriptet

eller 2. Sæt det ind i en onload-event !-)
Avatar billede olebole Juniormester
16. maj 2005 - 18:27 #9
<ole>

Du gør ikke, som roenving skriver. Du skal bruge en ID - ikke et NAME på dine elementer  ;o)

Denne adressering kan du heller ikke bruge under XHTML:
    document.opretlink.titel.focus();
- der skal du også bruge et ID og DOM.

Desuden kan 'embed' ikke bruges under XHTML.

Denne linie:
  <?xml version="1.0" encoding="iso-8859-1"?>
- disabler IE's evne til fornuftig brug af CSS i dit dokument.

Men hvorfor overhovedet bruge XHTML, når du alligevel sender dokumentet som ren HTML? XHTML er stort set ubrugeligt på WWW i dag - og version 1.0 er absolut ikke nogen fremtidssikring. Prøv at læse disse to:
    http://www.eksperten.dk/artikler/537
    http://www.eksperten.dk/artikler/538

At skrive XHTML er meget mere og andet end at huske at lukke sine tags  ;o)

/mvh
</bole>
Avatar billede w13 Novice
16. maj 2005 - 18:52 #10
Min fejl forsvandt efter jeg brugte Roenvings sidste forslag. Så hvis Roenving lige opretter svar, kan han få point :)

Olebole: Du skal også lige have tak for kommentaren =)
Jeg bruger (for tiden) kun XHTML til optimere min kode mht. til lukning af tags o.lign. (Det kan jeg gøre på: http://validator.w3.org) Disse luknings-fejl o.a. ville ikke blive fundet af validatoren, hvis jeg angav dokumentet som HTML. Ved dog ikke meget om XHTML, og den egentlige grund til, at jeg retter tilbage til HTML, når jeg har valideret færdig, er, at der netop som du påpeger er nogle ting, som ikke duer under XML. Har nu læst lidt af din artikel, og det lyder meget interessant, så tror, jeg læser dem færdig om lidt. Man kan ikke vide for meget om programmering ;)

Der er dog en ting, jeg nu er ret meget i tvivl om. Du siger, at name-atributten ikke kan bruges på elementer i en form. Jeg vidste, at de generelt ikke duede, men troede da at forms var undtagelser: http://www.html.dk/tutorials/xhtml/lektion4.asp (<--nederst!)

Den skriver det heller ikke som fejl, når jeg validerer.

Men i hvert fald tak, glæder mig til at læse artiklerne færdig =)
Avatar billede roenving Novice
16. maj 2005 - 18:56 #11
Velbekomme '-)

-- vi må da lige håbe, at ole 'lige' har forklaringen liggende !-)

-- men det ville ikke have fjernet problemet med, at selve formen ikke kunne have et navn !o]
Avatar billede roenving Novice
16. maj 2005 - 18:57 #12
;O)
Avatar billede roenving Novice
16. maj 2005 - 18:57 #13
;O)
Avatar billede roenving Novice
16. maj 2005 - 19:21 #14
-- og tak for point ;~}
Avatar billede olebole Juniormester
16. maj 2005 - 19:44 #15
w13 >> Så er der noget, du fundamentalt har misforstået. Du må endelig ikke lukke tags med ' />' i HTML. Den form for lukning har intet at gøre i HTML - den hører _kun_ hjemme i XHTML.
I HTML må du _kun_ lukke tags, der har et lovligt lukke-tag. Det kan du checke for her:
    http://www.w3.org/TR/html401/index/elements.html

Hvis du skriver til HTML-standarden, skal koden valideres som sådan ... endelig ikke som noget andet. Validerer du HTML som XHTML, får du et komplet ubrugeligt resultat.
Vil du være sikker på, din HTML-kode bliver valideret så stringent som muligt, bør du validere den mod HTML4.01-Strict.

Nej, der er ingen, der siger, du ikke må bruge name-attributter på form-elementer ... tværtimod, de bruges af serveren og kan ikke erstattes af id-attributter.
Derimod kan du ikke bruge adresseringer som 'document.FORM_NAME.FELT_NAME' eller 'document.IMAGES.IMAGE_NAME'. Det er ren HTML-DOM, som kan ikke kan bruges under XHTML.
Der skal du bruge de af W3C standardiserede DOM-ECMA bindinger ... f.eks: 'document.getElementById(ELEMENT_ID)', 'document.getElementsByName(ELEMENT_NAME)[INDEX]' eller 'document.getElementsByTagName(TAG_NAME)[INDEX]'.

Altså bør du under XHTML forsyne form-elementer med både en name- og en id-attribut, hvis du vil tilgå dem med JS.

Hvad html.dk skriver, skal man i øvrigt tage med et meget stort gran salt. Deres tutorials er langt fra uden fejl ... for nu at sige det pænt  :)
Avatar billede w13 Novice
16. maj 2005 - 21:43 #16
Oki, så er det nok derfor =)
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