Avatar billede martinbk Nybegynder
05. juni 2004 - 05:55 Der er 17 kommentarer og
1 løsning

syntax fejl i validering

nedenstående kode giver mig fejlen "Object does not support this property or method", håber nogen kan forklare mig hvorfor denne fejl opstår og hvordan jeg afhjælper den

function validate() {
  for(i=1;i<=<? echo $_SESSION['countNr']; ?>;i++) {
    if(document.dataForm.getElementById("artist"+i).value == "") {
      alert("Du skal angive kunstner nr:"+i);
      return false;
    }
  }
}
Avatar billede erikjacobsen Ekspert
05. juni 2004 - 08:17 #1
Du skal vist bare
  if(document.getElementById("artist"+i).value == "") {
Avatar billede thesurfer Nybegynder
05. juni 2004 - 11:34 #2
hmm.. normalt plejer man at bruge name="" i stedet for id=""..
så kan man vist bruge:
    if(document.dataForm("artist"+i).value == "") {

kan aldrig huske om det er () eller [].. det er måske []..
Avatar billede kimovitch Nybegynder
05. juni 2004 - 11:39 #3
if(document.forms.dataForm.elements["artist"+i].value == "")

-Kim
Avatar billede martinbk Nybegynder
05. juni 2004 - 17:59 #4
jamen dog jamen dog, alle 3 løsninger virker sørme, erik var dog først, smid et svar :)
Avatar billede erikjacobsen Ekspert
05. juni 2004 - 19:16 #5
Jeg samler dog ikke på point, så jeg frafalder ganske.
Avatar billede thesurfer Nybegynder
05. juni 2004 - 20:34 #6
Når erikjacobsen kom først med et rigtigt svar, vil jeg ike have points. :-)
Avatar billede martinbk Nybegynder
05. juni 2004 - 21:34 #7
kimovitch så må du jo ligge et svar
Avatar billede kimovitch Nybegynder
05. juni 2004 - 21:53 #8
Det synes jeg ikke...spar dine points til en anden gang ;-)

En enkelt ting mere:
Det er ikke ligegyldigt om du skriver name='' eller id='' i din input-tag.

Du skal bruge name='' for at hente værdien med
  document.forms.formNavn.elements.elementNavn.value

...og id='' for at hente værdien med
  document.getElementById("elementNavn").value

-Kim
Avatar billede thesurfer Nybegynder
05. juni 2004 - 21:57 #9
Da "forms" og "elements" er array, er det "hurtigere" at tilgå objekterne direkte:

document.formNavn.elementNavn.value
Avatar billede erikjacobsen Ekspert
05. juni 2004 - 22:06 #10
Det var noget af en påstand, thesurfer. Der er reelt ingen forskel.
Avatar billede martinbk Nybegynder
05. juni 2004 - 22:21 #11
thesurfer, problemet opstår jo så når der kan være alt fra 1 til 100 input's der skal valideres, document.formNavn.elementNavn+i+.value er vist ikke heeelt valid kode :)
Avatar billede erikjacobsen Ekspert
05. juni 2004 - 22:27 #12
Hvis det er dit problem, skal du blot kigge på 05/06-2004 11:39:13 - intet problem længere.
Avatar billede martinbk Nybegynder
05. juni 2004 - 23:31 #13
erikjacobsen yup i know, påpejede blot at thesurfer ville tilgå elementerne uden om de forskellige array's, hvilket er lidt svært når man ikke aner hvor mange elementer der er
Avatar billede erikjacobsen Ekspert
05. juni 2004 - 23:35 #14
"ikke aner"? Er felterne generet kender man jo antallet.
Men jeg læste forkert - troede det var spørgerens kommentar... ;) g'nat
Avatar billede thesurfer Nybegynder
06. juni 2004 - 14:23 #15
Jeg har fået at vide, at det er hurtigere at tilgå objektet direkte (document.formnavn.elementnavn), fremfor at søge i arrayet (document.forms.formnavn.elements.elementnavn).

Der er ikke meget forskel, men det skulle være hurtigere :-)
Avatar billede kimovitch Nybegynder
06. juni 2004 - 17:18 #16
Jeg lavede en lille (og ikke særligt grundig) test i nat fra en form med 5000 inputs. Det var en anelse hurtigere (5 - 10%) at gå 'direkte til objektet' som thesurfer siger. Hvis hastigheden er afgørende er det dog væsentligt hurtigere at starte med at lave en reference til alle form-elementer:
  fe = document.formNavn.elements;

Så kan værdierne i de enkelte felter hentes med
  v = fe['artist' + i].value;

Der var omkring 25% tid at spare fra thesurfers model. Den længste tid jeg kom op på var ca 9 sekunder for at hente værdierne fra de 5000 elementer og vise dem i en alert, så for en formular af mere almindelig størrelse kan man næppe registrere nogen forskel.
-Kim
Avatar billede roenving Novice
06. juni 2004 - 17:30 #17
Hvilket heldigvis bekræfter min fornemmelse omkring den slags ting ...

Det ses med lidt hurtig hovedregning, at den langsomste metode tog knap 2 millisekunder på kimovitch' maskine, så selv en gammel slavemaskine burde ikke få problemer med nogen af metoderne !-)
Avatar billede roenving Novice
06. juni 2004 - 17:32 #18
... 2 ms pr. felt ...
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