Avatar billede hulla Novice
14. april 2003 - 14:46 Der er 14 kommentarer og
1 løsning

er null eller ikke et object

Jeg har en form med nogle radio buttons.
Jeg vil gerne teste på om de er checked eller ej når jeg loader min side.
Jeg bliver ved med at få denne fejlmeddelelse:

document.frmMain.R1 er null eller ikke et object

<script language=javascript>

function Check_Choice(){
     
  var Input = document.frmMain.R1;
  alert("Input = " + Input)
    }
</script>
</head>

<body onload="Check_Choice();">
<font face="Verdana" size="2"><b>
<br>
       
<form id="frmMain">

<input ID="1" NAME="R1" TYPE="radio" VALUE="1" onclick="if(this.checked.value=true){Enrolment.style.display='Block'; Send1.style.display='None';}">
                           
<input ID="2" NAME="R1" TYPE="radio" VALUE="2"  onclick="if(this.checked.value=true){Enrolment.style.display='None'; Send1.style.display='Block';}">
Avatar billede bearhugx Nybegynder
14. april 2003 - 14:49 #1
prøv
  var input = document.form.frmMail.R1
eller
  var input = document.forms.frmMail.R1

kan ikke huske, hvilken af dem det er---
Avatar billede bearhugx Nybegynder
14. april 2003 - 14:53 #2
har lige testet det efter...  det er "forms", du skal bruge...
  var Input = document.forms.frmMail.R1;
Avatar billede neo.net Nybegynder
14. april 2003 - 14:57 #3
Du kan eventuelt også bruge:

var input = document.getElementById("R1")
Avatar billede olebole Juniormester
14. april 2003 - 15:15 #4
<ole>

neo.net >> Det vil ikke hjælpe et hak  :)

hulla >> Du kan i øvrigt ikke have id'er, der starter med et tal. De _skal_ starte med et bogstav ... stort eller lille.

<script type=text/javascript>
function Check_Choice() {
    var f = document.frmMain;
    var chosen = false;
    for (i=0; i<f.R1.length; i++) {
        if (f.R1[i].checked) chosen = f.R1[i].value;
    }
    if (chosen) alert(chosen);
    else slert("ingen radioknap valgt");
}
</script>

Og så skal du i øvrigt også lave dine onclicks rigtigt, men da jeg ikke ved, havd det er du prøver at lave, kan jeg ikke hjælpe med det. Én ting er sikkert: De er forkerte, som de er  :)

/mvh
</bole>
Avatar billede neo.net Nybegynder
14. april 2003 - 15:32 #5
olebole >> Du lidt ret. Men man kan godt have id'er der starter med tal, hvis man bruger funktionen getElementById

Og for at rette fejlen, så skal det selvfølgelig være:
var input = document.getElementById("1")

/neo.net
Avatar billede neo.net Nybegynder
14. april 2003 - 15:34 #6
Du lidt ret :-) ......Undskyld mit sprogbrug :-).

Mener selvfølgelig: "Du har lidt ret".
Avatar billede olebole Juniormester
14. april 2003 - 15:37 #7
Jeg må skuffe dig: Jeg har _fuldstændig_ ret  :)
Det har ikke noget med JavaScript at gøre. Man kan i følge HTML-standarden ikke have en id, der starter med andet end et bogstav.
/mvh
Avatar billede hulla Novice
14. april 2003 - 21:25 #8
olebole, som jeg kan se det virker mine onclick nøjagtig som forventet, og det hjælper med bearhugx´s forms....

men jeg har måske ikke helt forstået det med hvornår man skal sætte document.forms på og hvornår ikke.
f.eks har jeg denne sætning som jeg ikke kan få til at virke:

document.frmMain.Enrolment.style.display = 'block';

her er Enrolment et span som jeg gerne vil kunne vise... ??
Avatar billede olebole Juniormester
14. april 2003 - 21:51 #9
onclick="if(this.checked.value=true){Enrolment.style.display='Block'; Send1.style.display='None';}"

Skal være:

onclick="if(this.checked==true){Enrolment.style.display='Block'; Send1.style.display='None';}"

Det andet giver absolut ingen mening og virker med garanti ikke ... ikke i JavaScript i hvert fald. Kan du overhovedet få det til at virke i nogen browser, beror det på en browserbug  :)

Du kan godt bruge 'forms' ... du kan dog også blot skrive:
  var Input = document.frmMail.R1;
hvis din form har name="frmMail". Det er lidt hurtigere, da man ikke skal lede sidens forms-array igennem, men kalder formen direkte.
/mvh
Avatar billede olebole Juniormester
14. april 2003 - 21:53 #10
Og det skal i øvrigt være:
onclick="if(this.checked==true){document.getElementById("Enrolment").style.display='block'; document.getElementById("Send1").style.display='none';}"
Avatar billede hulla Novice
14. april 2003 - 22:10 #11
denne sætning virker ihvertfald ikke :o)

document.frmMain.Enrolment.style.display = 'block';

Warum nicht ?
Avatar billede olebole Juniormester
14. april 2003 - 22:18 #12
Fordi et div eller span ikke er en del af din form. Det er ikke et form-element.

Hvis du laver det, som jeg skrev, virker det. Din if-sætning er også helt hen i vejret
Avatar billede hulla Novice
15. april 2003 - 08:34 #13
Jeg synes ikke lige jag kan se nogen steder hvor du har vist hvordan jeg giver mit span en "Block" eller "None".
Avatar billede hulla Novice
15. april 2003 - 08:36 #14
har fundet ud af det,.. olebole du får pointene, :o)

Forøvrigt kan jeg godt se at man burde bruge == når det er JavaScript, men det andet virker altså.....
Avatar billede olebole Juniormester
15. april 2003 - 15:50 #15
Nej, det fungerer altså ikke  :)
Hvis vi tager dette udtryk: 'if(this.checked.value=true)', så giver det ingen mening overhovedet. Dette vil altid returnere 'undefined': 'this.checked.value'.
Det forstår JavaScript simpelthen ikke ... du kunne ligeså godt skrive 'this.rullepoelse'.

Når du skriver: 'if(this.checked.value=true)', spørger du, om du kan sætte en undefined (og uforståelig) property lig med true. Det kan du _altid_. Du kunne ligeså godt prøve at sætte den lig med 'papand'.
Du kunne med andre ord ligeså godt skrive:
  'if(this.rullepoelse="papand")'
Det ville give fuldt ud samme mening - og virker ligeså godt ... eller dårligt  :)
/mvh
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

IT-JOB

Netcompany A/S

IT Consultant

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Tech Lead til Datacenter Operations

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation