http://www.w3schools.com/htmldom/dom_examples.asp
Jag studerar dessa exempel och tycker det är svårt att följa... Det finns inget riktigt bra exempel om just detta.
28 svar · 1 425 visningar · startad av civilpolisen
Detta har säkert frågats om tidigare, men jag vet inte vad jag ska leta efter. Inte heller vad det egentligen heter...
När jag registrerar mig till en webbplats frågas efter region/län och kommun/stad.
När jag väljer Västra Götaland så hoppar alla dom städerna upp i valet för stad.
Jag tror ni fattar. Hur gör jag detta med minsta möjliga ansträngning...?
http://www.w3schools.com/htmldom/dom_examples.asp
Jag studerar dessa exempel och tycker det är svårt att följa... Det finns inget riktigt bra exempel om just detta.
Efter denna sökning kom jag till sida fyra:
http://javascript.about.com/library/bldydrop1.htm
Här är det jag vill. Ska testa senare idag.
Skriver detta för mig själv men även för andra som undrar! :-)
Det jobbig är väll att lägga in alla städer. Men här kommer ett tips på hur det kan se ut:
head:
<script language="Javascript">
var arrayCounty = new Array("Blekinge", "Dalarna", "Gotland");
var arrayBlekinge = new Array("stad1 i blekinge", "stad2 i blekinge");
var arrayDalarna = new Array("stad1 i dalarna");
var arrayGotland = new Array("stad i Gotland");
function newCounty(c){
var selbox = document.myform.opttwo;
var c = c;
switch(c.value)
{
case "Blekinge":
for(i=0; i < arrayBlekinge.length; i++){
selbox.options[i] = new Option(arrayBlekinge[i],arrayBlekinge[i]);
}
break;
case "Dalarna":
for(i=0; i < arrayDalarna.length; i++){
selbox.options[i] = new Option(arrayDalarna[i],arrayDalarna[i]);
}
break;
case "Gotland":
for(i=0; i < arrayGotland.length; i++){
selbox.options[i] = new Option(arrayGotland[i],arrayGotland[i]);
}
break;
}
}
</script>
body:
<form name="myform">
<select onchange="javascript: newCounty(this)">
<script language="Javascript">
for(i=0; i < arrayCounty.length; i++){
document.write("<option value='" + arrayCounty[i] + "'>" + arrayCounty[i] + "</option>");
}
</script>
</select>
</br>
<select name="opttwo">
</select>
</form>
Det enda du behöver göra med denna kod är att lägga till alla län som fattas i arrayen: "arrayCounty", skapa en array för varje län med alla städer i det länet i och ändra switch satsen så ska allt funka. Det finns över 100 städer i sverige och 21 län så jag orkade inte skriva in allt!
Oj! Man tackar! Det var seriöst arbetat!!
Precis som du skriver, det finns många städer. Men dom läser jag från databas så dom tänkte jag inte skriva in i alla fall.
Hmmm... Det är lördag kväll och plikten kallar. Man har en del "spaningsuppdrag" att ta sig ann... Jag ska studera din kod i morgon!
Tusen tack för engagemang!
Jag har även funderat på någon form av öppen, central, grejja som jag, men även andra, kan använda... Kommer tid kommer råd!! Det blir oavsett vilket inget med det just i kväll!! :-)
Skål!!
Det fungerar halvbra... eller egentligen inte alls om jag ska vara ärlig.
Men jag har en teori om att mellanslag och svenska tecken kan fungera dåligt i javascript?
Kom med din kod, så bli det betydligt enklare att felsöka, men variabler bör inte ha å, ä, ö i huvudtaget då det inte fungera bra. Sen måste jag säga att skapa en array per stad känns lite gammal modigt, jag hade haft ett objekt med alla län och dess städer kopplade på objektet, på så sätt så slipper du göra en switch sats på det sätt du behöver göra nu.
Såg ett problem med noshornin kod, det är att alla städer/län måste ha exakt lika många värden, annars kommer de inte skriva över dom, gjorde om koden:
<script language="Javascript">
var countrys = [
{
name: "Blekinge",
citys: [
"Karlshamn",
"Karlskrona",
"Olofström",
"Ronneby",
"Sölvesborg"
]
},
{
name: "Dalarna",
citys: [
"stad1",
"stad2"
]
},
{
name: "Gotland",
citys: [
"stad3",
"stad4"
]
},
];
function loadCountrys(el) {
var html = "";
for(var i=0;i<countrys.length;i++) {
var country = countrys[i];
html+="<option>" + country.name + "</option>";
}
el.innerHTML = html;
}
function newCounty(el) {
var citys = countrys[el.selectedIndex].citys;
var selbox = document.getElementById("citys");
html = "";
for(var i=0;i<citys.length;i++) {
var city = citys[i];
html+='<option value="' + city + '">' + city + '</option>';
}
selbox.innerHTML = html;
}
</script>
<form name="myform">
<select onchange="javascript: newCounty(this)" id="districts"></select>
<br />
<select name="opttwo" id="citys"></select>
</form>
<script type="text/javascript">
var dropdowndistricts = document.getElementById("districts")
loadCountrys(dropdowndistricts); //Fill in all the countrys
newCounty(dropdowndistricts); //Load citys by default
</script>
Tack!
För din information!
Jag undanhåller ingen kod! Jag har bara skrivit samma sak som redan finns på denna sidan, fast med ASP och från databas i stället. Resultatet är samma som redan finns postad på denna sidan... Fast med alla län utskrivna.
Jag får göra om i databasen nu så det är olika namn, även för denna funktion.
Sen ska jag testa med den kod du skriver ovan.
Återkommer...
Tack!
Jag undanhåller ingen kod! Jag har bara skrivit samma sak som redan finns på denna sidan, fast med ASP och från databas i stället. Resultatet är samma som redan finns postad på denna sidan... Fast med alla län utskrivna.Jag får göra om i databasen nu så det är olika namn, även för denna funktion.
Sen ska jag testa med den kod du skriver ovan.
Återkommer...
Men jag har en teori om att mellanslag och svenska tecken kan fungera dåligt i javascript?
Vad är det för fel med å ä ö och mellanslag då? Är det på variabler du har det eller i strängarna?
OK, vad du var nyfiken! :-) Jag ger dig kod, inga problem!!
strName = Västra Götalands län
strName2 = Västra Götaland
strJSName = VastraGotaland
strJSName = replace(strName2, " " , "")
strJSName = replace(strJSName, "Å" , "A")
strJSName = replace(strJSName, "Ä" , "A")
strJSName = replace(strJSName, "Ö" , "O")
strJSName = replace(strJSName, "å" , "a")
strJSName = replace(strJSName, "ä" , "a")
strJSName = replace(strJSName, "ö" , "o")
Detta utskrivet blir:
var arrayCounty = new Array("Välj län", "Blekinge", "Dalarna", "Gävleborg", "Halland",
"Jämtland", "Jönköping", "Kalmar", "Kronoberg", "Norrbotten", "Skåne", "Stockholm",
"Södermanland", "Uppsala", "Värmland", "Västerbotten", "Västernorrland", "Västmanland",
"Västra Götaland", "Örebro", "Östergötland");
var arrayBlekinge = new Array("Karlskrona");
var arrayDalarna = new Array("Skriv in ny stad för Dalarna");
var arrayGavleborg = new Array("Skriv in ny stad för Gävleborg");
var arrayHalland = new Array("Skriv in ny stad för Halland");
var arrayJamtland = new Array("Skriv in ny stad för Jämtland");
var arrayJonkoping = new Array("Arneby", "Eksjö", "Nässjö", "Vetlanda", "Värnamo");
var arrayKalmar = new Array("Kalmar");
var arrayKronoberg = new Array("Skriv in ny stad för Kronoberg");
var arrayNorrbotten = new Array("Skriv in ny stad för Norrbotten");
var arraySkane = new Array("Lund", "Malmö");
var arrayStockholm = new Array("Skriv in ny stad för Stockholm");
var arraySodermanland = new Array("Skriv in ny stad för Södermanland");
var arrayUppsala = new Array("Skriv in ny stad för Uppsala");
var arrayVarmland = new Array("Skriv in ny stad för Värmland");
var arrayVasterbotten = new Array("Skriv in ny stad för Västerbotten");
var arrayVasternorrland = new Array("Skriv in ny stad för Västernorrland");
var arrayVastmanland = new Array("Hallstahammar");
var arrayVastraGotaland = new Array("Skriv in ny stad för Västra Götaland");
var arrayOrebro = new Array("Skriv in ny stad för Örebro");
var arrayOstergotland = new Array("Linköping", "Mjölby", "Motala", "Norrköping", "Vadstena", "Ödeshög");
Detta är en spännande blandning av ASP och Javascript...
Detta fungerar nu. Nu ska rätt städer under rätt län uppdateras i den andra listan. Det fixar jag! :-)
Tack för kompetent assistans!!
strName = Västra Götalands län
strName2 = Västra Götaland
strJSName = VastraGotaland
Även i ASP så vet du att detta inte fungera, strName bli samma som variablen västra, vilket inte gå, om du skall använda strängar så är det:
strName = "Västra Götalands län";
strName2 = "Västra Götaland";
strJSName = "VastraGotaland";
som gäller.
Det är väl kanske en smaksak men:
new Array() korta ner det till [] istället (sen är det ju 9tecken mindre)
OK, nu kommer vi in på saker som är j*vligt oväsentliga...
strName = trimVars("strName")
strName2 = trimVars("strName2")
***
> new Array() korta ner det till [] istället (sen är det ju 9tecken mindre)
Detta känner jag inte till. Tack för tipset!
Vet inte vad trimVars gör, men jag gissar på att det är:
strName = trimvars(strName) du är ute efter i ASP.
' ## TRIM VARS
FUNCTION trimVars(myVar)
tmp = request(myVar)
tmp = replace(tmp, "|", "")
tmp = replace(tmp, "'", "''")
trimVars = tmp
END FUNCTION
ASP koden kommer från det administrativa gränssnittet. Det är redan fixat och klart.
***
Jag gillar din kod!!
Men lite grejer som jag håller på att ändra:
Man vill ju skicka ID värdet på både stad och region. Inte själva namnet...
Det råder en viss blandning av begreppen "county" och "country" i din kod. Om man inte rör det så är det i sin ordning.
Själv skriver jag "region"... Men det är bara kosmetika! :-)
Jag håller på att fixa detta nu!
intRegionID: "6",
name: "Jonkoping",
name2: "Jönköpings län",
citys: ["Arneby", "Eksjö", "Nässjö", "Vetlanda", "Värnamo"],
intCityID: ["4", "2", "3", "1", "5"]
Ska jag skriva på detta sättet eller ska jag skriva sakerna efter varandra? Men det blir ju krångligt det med...
ID värdena på städerna fungerar inte riktigt. Det jag har prövat vill sig inte.
jag hade hellre kört:
intRegionID: "6",
name: "Jonkoping",
name2: "Jönköpings län",
citys: [{name:"Arneby", ID: "4"},{name:"Eksjö", ID: "2"},...]
För att få en korrekt struktur, intCityId säger inte direkt att det är mot citys den menar, men det är kanske en smaksak.
Min databas ser ut så här:
[users]
intID
...
intRegionID
intCityID
[region]
intID
[city]
intID
På detta viset kan man lätt sammanställa olika typer av information/statistik med väldigt lite kod. Men visst, det är en smaksak!
Tack för tips! jag ska studera ditt exempel!
Varför behöver du name och name2 ? vad skall du använda det till?
Du har en poäng... tror jag. Det var till den andra koden, som jag inte använder mer. Men nu när jag skickar ID-nummer borde jag kunna rationalisera bort den. Absolut!
Återkommer...
(Får be om ursäkt för den långsamma återkopplingen här... Men det är annat som drar också, så att säga!!)
function newCounty(el) {
var citys = countrys[el.selectedIndex].citys;
var selbox = document.getElementById("citys");
html = "";
for(var i=0;i<citys.length;i++) {
var city = citys[i];
[b]var intID = citys[i];[/b]
html+='<option value="' + [b]intID[/b] + '">' + city + '</option>';
}
selbox.innerHTML = html;
}
Allt fungerar bra, men i denna koden ovan har jag försökt massa olika alternativ och inte prickat rätt...
Vad är det jag inte ser!? (Det är alltså ID på staden som inte fungerar.)