Avatar billede sacrificed.dk Nybegynder
04. juni 2006 - 16:07 Der er 1 kommentar og
1 løsning

Vise/skjule tekst

Jeg skal have lavet et spillersøgningssystem i Javascript. Alle poster fra en Access database skal skrives ved hjælp i ASP (ikke noget problem - er gjort). Herudover skal der være en dropdown menu, hvor alle landene der er spillere fra vises (se kode nedenfor). Når et land vælges skal spillere fra KUN det land vises og ingen andre. Hvordan det laves i Javascript kan jeg simpelthen ikke finde ud af. Jeg har nedenstående kode:


<script type="text/javascript">
<!--
function ShowHide(id) {

<%
dbname=Server.Mappath("../../db/manager.mdb")
set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open

sql="select * from players order by country"
set rs = cn.execute(sql)

country="0"
%>

<%
do while not rs.eof

if not country=rs("country") then
country=rs("country")
%>

    obj = document.getElementsByTagName("div");
    if (obj[country] == '<%=rs("country")%>'){
    obj[country].style.visibility = 'visible';
    }
<%
end if
rs.movenext
loop
%>
}
//-->
</script>

<%

dbname=Server.Mappath("../../db/manager.mdb")
set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open

sql="select * from players order by country"
set rs = cn.execute(sql)

country="0"
%>

<form action="" name="form" method="post">
<select name="countryid" onchange="ShowHide('argentina')">
    <option selected>Vælg land</option>
<%
rs.movefirst
do while not rs.eof

if not country=rs("country") then
country=rs("country")
response.write"<option>" & rs("country") & "</option>"
end if

rs.movenext
loop
%>
    </option>
</select>
</form>






<table cellspacing=0 cellpadding=0 ID=Players>
<%
dbname=Server.Mappath("../../db/manager.mdb")
set cn = server.createobject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source =" & dbname
cn.connectionstring = constr
cn.open

sql="select * from players"
set rs=cn.execute(sql)
%>

    <tr>
        <td>
<% do while not rs.eof %>
<%
price=rs("startingprice")+rs("round1bonus")+rs("round2bonus")+rs("round3bonus")+rs("round4bonus")+rs("round5bonus")+rs("round6bonus")+rs("round7bonus")
%>
        <div style="visibility:hidden" price="<%=price%>" position="<%=rs("position")%>" name="<%=rs("firstname") & " " & rs("lastname")%>" country="<%=rs("country")%>" id="<%=rs("id")%>"><%=rs("firstname") & " " & rs("lastname")%> - <%=price%></div>
<%
rs.movenext
loop
%>
        </td>
    </tr>


</table>
</form>
        </td>
    </tr>
</table>

I dette eksempel har jeg sat den til at skulle vise spillere fra Argentina "onchange" i dropdown menuen, men ikke engang det virker. Jeg skal have den til at vise de linier, hvor "country='det i dropdown menuen valgte land'" og ikke andre, men det kan jeg slet ikke se mig igennem. Et andet mindre problem er at scrolleren får en længde der svarer til at alle linier er synlige, selvom de som standard ikke er det, og det skal den selvfølgelig ikke. Da jeg ikke er nogen haj til Javascript kan det godt være der er en anden måde det skal laves på. I så fald - fortæl fortæl...

På forhånd mange tak...
Avatar billede sacrificed.dk Nybegynder
10. juni 2006 - 00:56 #1
hmm... Ingen interesse... Lukketid
Avatar billede thrytter Nybegynder
18. juni 2006 - 13:19 #2
Havde ellers lavet et lille eksempel inden experten gik ned i sidste uge og glemte så alt om det.

For nemhedens skyld hentes der ikke data fra basen.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>sac</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 aPlayer = new Array();
       
        function init()
        {
            initCountryList();
            initPlayerList();
        }
       
        function selectPlayer(id)
        {   
            var obj = document.getElementById("CountryList");
            var selectedPlayer;
           
            for (var i=0; i<aPlayer.length; i++)
            {
                if (aPlayer[i][1] == id)
                {                   
                    aPlayer[i][5] = "1";
                                                           
                    showSelectedPlayerList();
                }
            }                       
           
            if (obj)
                showPlayerList(obj[obj.selectedIndex].value);
        }
       
        function cancelPlayer(id)
        {   
            var selectedPlayer;
            var obj = document.getElementById("CountryList");
           
            for (var i=0; i<aPlayer.length; i++)
            {
                if (aPlayer[i][1] == id)
                {                   
                    aPlayer[i][5] = "0";
                                                       
                    showSelectedPlayerList();
                }
            }                       
           
            if (obj)
                showPlayerList(obj[obj.selectedIndex].value);
        }
                       
        function initCountryList()
        {
            var tmp;
           
            tmp = "<select id='CountryList' name='CountryList' onchange='CountryChanged(this)'>";
            tmp += "<option selected>Vælg land</option>";
            tmp += "<option value='Denmark'>Denmark</option>";
            tmp += "<option value='Sweden'>Sweden</option>";
            tmp += "<option value='Norway'>Norway</option>";
            tmp += "</select>";
           
            document.getElementById("CountryContainer").innerHTML = tmp;
        }
       
        function initPlayerList()
        {                   
            aPlayer[0] = new Array("Denmark", "1", "Dansker 1", "Angriber", "1000", "0");
            aPlayer[1] = new Array("Denmark", "2", "Dansker 2", "Midtbane", "2000", "0");
            aPlayer[2] = new Array("Denmark", "3", "Dansker 3", "Forsvarer", "3000", "0");
            aPlayer[3] = new Array("Sweden", "4", "Svensker 1", "Angriber", "1000", "0");
            aPlayer[4] = new Array("Sweden", "5", "Svensker 2", "Midtbane", "2000", "0");
            aPlayer[5] = new Array("Sweden", "6", "Svensker 3", "Forsvarer", "3000", "0");
            aPlayer[6] = new Array("Norway",  "7", "Nordmand 1", "Angriber", "1000", "0");
            aPlayer[7] = new Array("Norway",  "8", "Nordmand 2", "Midtbane", "2000", "0");
            aPlayer[8] = new Array("Norway", "9", "Nordmand 3", "Forsvarer", "3000", "0");
        }
       
        function showSelectedPlayerList()
        {
            var tmp = "";           
            var tmp1;
                                                                                                                           
            tmp1 = "<table cellpadding='0' cellspacing='0'>";
            tmp1 += "<tr>";
            tmp1 += "<th>Country</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Id</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Name</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Position</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Prize</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "</tr>";
                                               
            for (var i=0; i<aPlayer.length; i++)
            {
                if (aPlayer[i][5] == '1')
                {
                    tmp += "<tr id='SelectedPlayer" + aPlayer[i][1] + "'>";                   
                    tmp += "<td>" + aPlayer[i][0] + "</td>"; // Country
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][1] + "</td>"; // Id
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][2] + "</td>"; // Name
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][3] + "</td>"; // Position               
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][4] + "</td>"; // Prize
                    tmp += "<td></td>";
                    tmp += "<td><a href='java script:cancelPlayer(" + aPlayer[i][1] + ");'>fravælg</a></td>";
                    tmp += "</tr>";                               
                }
            }
           
            if (tmp != "")
                tmp1 += tmp + "</table>";
            else
                tmp1 = "Ingen spillere valgt";
           
            document.getElementById("SelectedPlayerContainer").innerHTML = tmp1;           
        }
       
        function showPlayerList(country)
        {
            var tmp = "";
            var tmp1;
                       
            if (country == "")
                return
               
            tmp1 = "<table cellpadding='0' cellspacing='0'>";
            tmp1 += "<tr>";
            tmp1 += "<th>Country</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Id</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Name</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Position</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>Prize</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "<th>&nbsp;</th>";
            tmp1 += "</tr>";
                                               
            for (var i=0; i<aPlayer.length; i++)
            {
                if (aPlayer[i][0] == country && aPlayer[i][5] == '0')
                {
                    tmp += "<tr id='Player" + aPlayer[i][1] + "'>";                   
                    tmp += "<td>" + aPlayer[i][0] + "</td>"; // Country
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][1] + "</td>"; // Id
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][2] + "</td>"; // Name
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][3] + "</td>"; // Position               
                    tmp += "<td></td>";
                    tmp += "<td>" + aPlayer[i][4] + "</td>"; // Prize
                    tmp += "<td></td>";
                    tmp += "<td><a href='java script:selectPlayer(" + aPlayer[i][1] + ");'>vælg</a></td>";
                    tmp += "</tr>";                               
                }
            }
           
            if (tmp != "")
                tmp1 += tmp +  "</table>";
            else
                tmp1 = "Ingen spillere fundet fra: " + country;
                                   
            document.getElementById("PlayerContainer").innerHTML = tmp1;           
        }
       
        function CountryChanged(obj)
        {
            var tmp;           
            var index = obj.selectedIndex;
           
            if (index == 0)
            {
                document.getElementById("PlayerContainer").innerHTML = "Du skal vælge et land!"
                return
            }
           
            var country = obj[index].value;
           
            showPlayerList(country);
        }               
        //-->
        </script>
        <form id="Form1" method="post" runat="server">
            <div id="CountryContainer"></div>
            <br>           
            <div id="PlayerContainer"></div>       
            <br>
            <div id="SelectedPlayerContainer"></div>   
        </form>
    </body>
</html>
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