Avatar billede breum Nybegynder
18. juni 2006 - 13:48 Der er 5 kommentarer og
1 løsning

Benyttelse af arrays

Jeg har et javascript http://www.rejseklar.dk/trnrulle4.html der virker efter hensigten. Men da jeg skal indsætte flere tusinde (ens) byer (fordelt på lande) i begge By-rullegardiner vil jeg gerne have dem ind i et array som jeg kan benytte til begge by-rullegardiner.
(ligeledes med land)
Er det forståeligt?
Avatar billede thrytter Nybegynder
18. juni 2006 - 23:53 #1
Prøv om du kan bruge flg. til noget


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>TEST</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </head>
    <body onload="init();">
        <script type="text/javascript">
        <!--
        var aCountry = new Array();
        var aCity = new Array();
       
        function init()
        {
            initCountryArray();
            initCityArray();
           
            fillCountryList('From');
            fillCountryList('To');
           
            fillCityList('From');
            fillCityList('To');
        }
       
        function initCountryArray()
        {
            // Kolonne 1 = landeId
            // Kolonne 2 = landeNavn
            aCountry[0] = new Array("1", "Danmark");
            aCountry[1] = new Array("2", "Sverige");
            aCountry[2] = new Array("3", "Tyskland");
            aCountry[3] = new Array("4", "Frankrig");           
        }
       
        function initCityArray()
        {
            // Kolonne 1 = byId
            // Kolonne 2 = landeId
            // Kolonne 3 = byNavn
            aCity[0] = new Array("1", "1", "København");
            aCity[1] = new Array("2", "1", "Billund");
            aCity[2] = new Array("3", "2", "Arlanda");
            aCity[3] = new Array("4", "2", "Gardamoen");
            aCity[4] = new Array("5", "3", "Hamborg");
            aCity[5] = new Array("6", "3", "Flensborg");
            aCity[6] = new Array("7", "4", "Nice");
            aCity[7] = new Array("8", "4", "Cannes");           
        }                       
       
        function showCity(s)
        {
            var oCity = eval(oCity = document.getElementById("City" + s));
           
            var cityIndex = oCity[oCity.selectedIndex].value;
            var cityId = aCity[cityIndex][0];
            var cityName = aCity[cityIndex][2];
           
            alert(cityId + ' : ' + cityName);
        }
       
        function fillCountryList(s)
        {
            var oCountry = eval(oCountry = document.getElementById("Country" + s))
                                                                   
            for (var i=0 ; i<aCountry.length; i++)
                oCountry.options[i] = new Option(aCountry[i][1], aCountry[i][0]);                               
        }
                           
        function fillCityList(s)
        {                                                       
            var oCountry = eval(oCountry = document.getElementById("Country" +s))
            var oCity = eval(oCity = document.getElementById("City" + s))
                   
            var selectedCountryValue = oCountry[oCountry.selectedIndex].value;
                                                                       
            var index = 0;
           
            oCity.length = 0;
                                           
            for (var i=0; i<aCity.length; i++)
            {
                if (aCity[i][1] == selectedCountryValue)
                {                                       
                    oCity.options[index] = new Option(aCity[i][2], i);                       
                    index ++;                   
                }
            }                                                               
        }                                                           
        //-->
        </script>
        <form id="Form1" method="post" runat="server">       
            Fra land:&nbsp;<select id="CountryFrom" onchange="java script:fillCityList('From');"></select>&nbsp;Fra by:&nbsp;<select id="CityFrom"></select>
            <br>           
            <br>           
            Til land:&nbsp;<select id="CountryTo" onchange="java script:fillCityList('To');"></select>&nbsp;Til by:&nbsp;<select id="CityTo"></select>                           
            <br>
            <br>           
            <input type="button" value="Vis fra land" onclick="java script:showCity('From');">&nbsp;&nbsp;<input type="button" value="Vis til land" onclick="java script:showCity('To');">
        </form>
    </body>
</html>
Avatar billede breum Nybegynder
04. december 2006 - 13:19 #2
dropper du et svar så jeg kan give points?
Avatar billede olebole Juniormester
04. december 2006 - 14:30 #3
<ole>

Hvis der er tale om felere tusinde byer, ville en Ajax-løsning nok være betydeligt mere elegant  ;o)
    http://www.adaptivepath.com/publications/essays/archives/000385.php

/mvh
</bole>
Avatar billede thrytter Nybegynder
04. december 2006 - 21:23 #4
svar
Avatar billede breum Nybegynder
05. december 2006 - 10:26 #5
Tak olebole, det ligner noget som det kan betale sig at sætte sig ind i, i første omgang valgte jeg den lette udvej
Avatar billede olebole Juniormester
05. december 2006 - 10:31 #6
Selvtak - ja, Ajax er så absolut en kraftfuld teknik, det kan betale sig at sætte sig ind i  ;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