Avatar billede tue_skaarup Nybegynder
11. juni 2007 - 03:14 Der er 8 kommentarer og
1 løsning

Firefox: "document[0] has no properties", IE kører fint

Hej eksperter

Jeg har et problem med en stump JavaScript kaldt fra en formular. Formularen er til at sætte en cookie på baggrund af et brugervalg i radio buttons.

Alt kører fint i IE 6/7. Sikkert fordi IE tillader mere kikset kode end Firefox.

Alt HTML/CSS kode validerer iøvrigt 100%.


HTML:

<form name="UserSelection" method="get" action="" onsubmit="return false;">
<div id="rightcolumn-userradios">
<input type="radio" class="rightcolumn-radio" name = "level" value = "beg">Brugervalg 1
<input type="radio" class="rightcolumn-radio" name = "level" value = "adv">Brugervalg 2
<input type="radio" class="rightcolumn-radio" name = "level" value = "std">Brugervalg 3
</div>
<input type="button" id="rightcolumn-button" name = "userselect" value = "Aktiver valg" title="Aktiverer valg" onclick="get_radio_value()">
</form>


JS funktion:

function get_radio_value()
{
for (var i=0; i < document[0].level.length; i++)
  {
  if (document[0].level[i].checked)
      {
      var rad_val = document[0].level[i].value;
    SetCookie("User selection",rad_val,"Thu, 2 Aug 2021 20:47:11 UTC","/","","");
    window.location.reload()
      }
  }
}


Fejlkode fra Firefox:

document[0] has no properties
get_radio_value
onclick(click clientX=0, clientY=0)
[Break on this error] for (var i=0; i < document[0].level.length; i++)


Håber I kan give mig et godt bud på en gedigen og ren kode, der virker i både Firefox og IE. Jeg er ikke særlig skrap til JS, så vær rar at spare på indforståethederne :-)

På forhånd tak
Avatar billede windcape Praktikant
11. juni 2007 - 06:42 #1
fordi at der ikke findes "document[0]".

Du er ude efter document.forms[0] istedet, dog vil jeg anbefale at du giver din form et id. <form id="foobar"> , og så bruger document.getElementById('foobar').

Derudover kan det hele gøres lidt nemmere:

function get_radio_value() {
    var radios = document.getElementById('rightcolumn-userradios').getElementsByTagName('inut');
    for(var i=0;i<radios.length;i++) {
        if(radios[i].checked) {
            var rad_val = radios[i].value;
            SetCookie("User selection",rad_val,"Thu, 2 Aug 2021 20:47:11 UTC","/","","");
            window.location.reload()
        }
    }
}
Avatar billede windcape Praktikant
11. juni 2007 - 06:42 #2
tastefejl ;-)

function get_radio_value() {
    var radios = document.getElementById('rightcolumn-userradios').getElementsByTagName('input');
    for(var i=0;i<radios.length;i++) {
        if(radios[i].checked) {
            var rad_val = radios[i].value;
            SetCookie("User selection",rad_val,"Thu, 2 Aug 2021 20:47:11 UTC","/","","");
            window.location.reload()
        }
    }
}
Avatar billede tue_skaarup Nybegynder
11. juni 2007 - 08:14 #3
windscape: Det kører perfekt, mange tak :-))

Og hvordan tildeler jeg så lige point til dig?
Avatar billede tue_skaarup Nybegynder
11. juni 2007 - 08:18 #4
Hmm, jeg tror jeg fik tildelt mig selv point :-/
Avatar billede windcape Praktikant
11. juni 2007 - 08:56 #5
Ligemeget :-) , tak er nok til mig. Håber du også lærte noget.
Avatar billede tue_skaarup Nybegynder
11. juni 2007 - 09:25 #6
Ja jeg lærte noget, selvom jeg nok aldrig bliver en haj til JS :-)

Underligt med de point. Synes ikke jeg på noget tidspunkt fik mulighed for at tildele point til dig. Selvom du siger det er ligemeget, vil jeg nu alligevel gerne give dig de point. Hvordan gør jeg det nu?
Avatar billede olebole Juniormester
11. juni 2007 - 13:07 #7
<ole>

Du opretter blot et nyt spørgsmål med overskriften:
  Points til windscape for: http://www.eksperten.dk/spm/782548  ;o)

/mvh
</bole>
Avatar billede tue_skaarup Nybegynder
11. juni 2007 - 23:07 #8
Ok, hermed gjort.

windscape, se denne: http://www.eksperten.dk/spm/782690
Avatar billede olebole Juniormester
13. juni 2007 - 13:44 #9
Rigtig god stil, Tue!  ;o)
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