Avatar billede Slettet bruger
06. april 2002 - 00:10 Der er 23 kommentarer og
1 løsning

Array

Hej

Jeg har et array indeholdende danske postnumre. Jeg ønsker at der i min <input type="text" name="omraade"> returneres value København Ø hvis der er indtastet e.g 2100 i min <input type="text" name="pstnr">
Hvordan gør man det?
Avatar billede jakoba Nybegynder
06. april 2002 - 00:48 #1
du siger dit array indeholder postnumre. Hvis det ikke også samtidig indeholder områdenavne er det umuligt at lave det du ønsker.

men hvis dit array fx ser sådanher ud:

var ditArray = new Array(
      "4000|Roskilede",
      "1764|Kbh. V Bodilsgace",
      "2980|Kokkedal",
      "2990|Nivå"
//... osv
                        );

er det rimeligt nemt.

sørg for at arrayet er sorteret så de laveste (eller højeste, bare vi ved hvilke) postnumre står forrest


function findPostnr ( ) { // laveste først i arrayet.
    var streng = document.forms[0].pstnr.value +"|";
    var forst = 0;
    var sidst = ditArray.length-1;
    var midt;
    while ( forst < sidst ) {
        midt = Math.round( (forst+sidst)/2 );
        if ( ditArray[midt] > streng ) {
            sidst = midt;
        } else {
            forst = midt+1;
        }
    }
    midt = forst.split("|");
    if ( midt[0] == postnr ) {
        // vi fandt det.

        document.forms[0].område.value = midt[1];
    } else {
        // ulovligt postnr (eller en fejl)
        alert( "prøv et andet postnummer" );
    }
}; //end findPostnr( )

mvh JakobA
Avatar billede olebole Juniormester
06. april 2002 - 00:56 #2
<ole>
Du starter med at hente denne fil, jeg har lavet med samtlige danske postnumre. De ligger så komprimeret, som de næsten kan og fylder kun omkring 21Kb:
  http://x-codes.dk/eksperten/postnumre/dk_pns.js

De er formateret som et objekt - og du kan tilgå numrene på følgende måde:

<script type="text/JavaScript" src="dk_pns.js"></script>
<script type="text/JavaScript">
  alert(pn.p2100);
</script>

Det vil resultere i en alert, der siger 'Kbh Ø'  ;o)
/mvh
</bole>
Avatar billede olebole Juniormester
06. april 2002 - 00:59 #3
Du kan evt. følge tilblivelsen her:
  http://www.eksperten.dk/spm/187815
Check iøvrigt, hvor meget dit eget array fylder  ;o)
/mvh
Avatar billede olebole Juniormester
06. april 2002 - 01:02 #4
Objektet hedder 'pn' og alle postnumrene er så properties på dette objekt. Numrene har fået et 'p' foran, da JavaScript ikke kan lide rene numre som properties.
pn.p2200 vil altså returnere 'Kbh N' - og 'pn.p6800' vil returnere 'Varde'
/mvh
Avatar billede Slettet bruger
06. april 2002 - 01:21 #5
jakoba > Doh! Det indeholder naturligvis også områdenavne...
Det har strukturen
array[1000]='København K'; og så dernedad
Avatar billede olebole Juniormester
06. april 2002 - 01:25 #6
ezolu >> Hvis du dumper dit array og bruger den fil, jeg peger på, kommer du ned på den halve download  ;o)
/mvh
Avatar billede jakoba Nybegynder
06. april 2002 - 01:29 #7
Ok. men kik på oleboles svar. det er KLART at foretrække. dit array vil fx fylde 4*9000 = 36 Kilobyte blot til indexet. Og så skal strengene med områdenavne lægges oveni. Den bliver tung at loade.

(eller er det 8 * 9000?)
Avatar billede Slettet bruger
06. april 2002 - 01:29 #8
olebole > Nu har jeg taget *.js filen... Hvordan kommer jeg så videre? Ved godt at jeg kan inkludere den med <script type="text/JavaScript" src="dk_pns.js"></script>
Men selve den del som bevirker at områdenavnet kommer som value i mit input felt, er jeg ikke med på :o)
Avatar billede jakoba Nybegynder
06. april 2002 - 01:40 #9
function oleLookUp(  ){
      var streng = "p" +document.forms[0].pstnr.value;
      if ( pn[streng] ) {
          document.forms[0].område.value = pn[streng];
      } else {
          alert( "det postnummer findes ikke" );
      }
}; //end oleLookUp( )

i en script-sektion.

mvh JakobA
Avatar billede jakoba Nybegynder
06. april 2002 - 01:41 #10
Ups. jeg har stavet dit navn omraade med bolle-å
Avatar billede olebole Juniormester
06. april 2002 - 01:41 #11
Prøv at se i det E-spm. jeg linkede til ovenfor. Der er det diskuteret, hvordan det løses  ;o)
/mvh
Avatar billede Slettet bruger
06. april 2002 - 01:51 #12
SKAL <script type="text/JavaScript" src="dk_pns.js"></script> komme inden </head>
Avatar billede olebole Juniormester
06. april 2002 - 01:55 #13
Det skal bare komme inden dine andre funktioner - men man lægger det som regel mellem <head> og </head> for at være sikker på, alle JS-funktioner er indlæst, inden brugeren begynder at anvende dem  ;o)
/mvh
Avatar billede Slettet bruger
06. april 2002 - 02:02 #14
ole > Hmmmm... Jeg kan ikke få det til at virke!
Jeg har inkluderet js filen, har indsat <script>
function lookUp(  ){
      var streng = "p" +document.forms[0].postnummer.value;
      if ( pn[streng] ) {
          document.forms[0].bynavn.value = pn[streng];
      } else {
          alert( "det postnummer findes ikke" );
      }
}; //end lookUp( )
</script>
og indsat onblur=""lookUp(this);"" på feltet postnummer
Avatar billede Slettet bruger
06. april 2002 - 02:03 #15
de dobbelte "" er fordi det Response.Write's i asp :o)
Avatar billede olebole Juniormester
06. april 2002 - 02:16 #16
Prøv at se et eksempel, der virker her:
  http://x-codes.dk/eksperten/postnumre/
/mvh
Avatar billede olebole Juniormester
06. april 2002 - 02:27 #17
Du *har* husket at bruge form-tags ... ikk'?
/mvh
Avatar billede Slettet bruger
06. april 2002 - 02:28 #18
olebole > Tak for hjælpen :o) Har ikke fået det til at virke endnu, men det er nok bare noget med asp'en som mobber lidt...
Avatar billede olebole Juniormester
06. april 2002 - 02:28 #19
... ellers får 'forms[0]' en hel anden - og ganske forkert - betydning  ;oD
/mvh
Avatar billede Slettet bruger
06. april 2002 - 02:29 #20
olebole > Ja, jeg er sgu ikke dum til hverken html eller asp - blot har jeg så at sige aldrig rodet med JavaScript før ;o)
Avatar billede olebole Juniormester
06. april 2002 - 02:29 #21
oki .... du er velkommen til at vise mig en URL, så jeg måske kan finde problemet for dig.
/mvh
Avatar billede Slettet bruger
06. april 2002 - 02:37 #22
Det virker som en drøm og holder sig bestemt inden for en rimelig downlaod tid :o)
Takker!
Avatar billede olebole Juniormester
06. april 2002 - 02:48 #23
... anytime  ;o)
Faktisk skal det da lige nævnes, at jakobas gentagne - og som oftest stædige - performance-tests var inspirationen til at se, hvor meget nikolajdus array kunne koges ned i spørgsmålet, jeg linkede til ovenfor  ;o)
/mvh
Avatar billede Slettet bruger
06. april 2002 - 02:51 #24
ole > Ja - det fornemmede man ;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