11. juni 2007 - 03:14Der 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 :-)
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() } } }
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?
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.