Array richtig auslesen
Markus
- javascript
Hi Leute
Habe 2 Dropdowns (Bezirke, Bundesländer) Wenn ein Bundesland ausgewählt wird erscheinen die dazugehörigen Bezirke im Dropdown..
Mein Problem im Bezirk Dropdown gibts eine option "Alle Bezirke" und im Bundesland Dropdown eine option mit "ganz Österreich" und wenn ich darauf klicke sollten alle Bundesländer ausgelesen und eingetragen werden..
Aber wie lese ich alle aus?
Hier mein bisheriger Code:
function chkBundesland()
{
var bundesland =document.Formular.Bundesland.selectedIndex;
if(bundesland > 0)document.Formular.Bezirk.length = 1; //wenn ein Bundeslan ausgewählt ist wird das Bezir Dropdown bis auf den ersten Wert "Alle" gelöscht
Bundesland = new Array();
Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = new Option("Eisenstadt-Stadt");
Bundesland.Burgenland[1] = new Option("Eisenstadt-Umgebung");
[...] // usw...
Bundesland['Kärnten'] = new Array();
Bundesland['Kärnten'][0] = new Option("Feldkirchen");
Bundesland['Kärnten'][1] = new Option("Hermagor");
[...] // usw... wegen Platzgründen möcht ich nicht alle Bundesländer und Bezirke anführen
bundesland = document.Formular.Bundesland.options[document.Formular.Bundesland.selectedIndex].text; // das ausgewählte Bundesland wird ausgelesen
var bezirke = Bundesland[bundesland]; // Bundesland wird ausgewählt
for(var i = 0; i < bezirke.length; i++) document.Formular.Bezirk.options[i+1] = bezirke[i];
// Schleife in der die Bezirke geschrieben werden..
Das ganze wird bei Bundesland Dropdown bei onChange aufgerufen! und funktioniert auch..
Nur wie kann ich nun alle Bezirke wieder ins Bezirk Dropdown füllen?
Was müßte ich in den Code noch einbauen bzw. Wo müßte ich noch was einbauen?
Wäre über ein Hilfe sehr dankbar!
Hab mal:
for(var bundesland in Bundesland) alert(bundesland);
probiert. Im Alert erscheinen dann alle Bundesländer kann man damit was anfangen?
Danke
MFG
Markus
So kommen wir ja nicht weiter.
Hier ist das läuft soweit, wobei ich aber nicht weiss ob das das ist was du willst.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Testcase</title>
<script type="text/javascript">
var alle = new Option("-- alle --");
var ganz = new Option("-- Ganz Österreich --");
var Bundesland = new Array();
Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = new Option("Eisenstadt-Stadt");
Bundesland.Burgenland[1] = new Option("Eisenstadt-Umgebung");
Bundesland['Kärnten'] = new Array();
Bundesland['Kärnten'][0] = new Option("Feldkirchen");
Bundesland['Kärnten'][1] = new Option("Hermagor");
function chkBundesland(form)
{
var index = form.bundesland.selectedIndex;
if(index) form.bezirke.length = 1;
var b = form.bundesland.options[index].text;
if(b == "-- Ganz Österreich --") b = '';
var bezirke = getBezirke(b);
for(var i = 0; bezirke[i]; i++)
{
form.bezirke.options[i + 1] = bezirke[i];
}
}
function getBezirke(b)
{
if(b) return Bundesland[b];
var tmp = new Array();
for(var x in Bundesland)
for(var i = 0; Bundesland[x][i]; i++) tmp[tmp.length] = Bundesland[x][i];
return tmp;
}
</script>
</head>
<body>
<form>
<script>
document.write('<select name="bundesland" onchange="chkBundesland(this.form);">');
document.write('<option>' + ganz.text )
for(var bundesland in Bundesland)
{
document.write('<option>' + bundesland )
}
var tmp = getBezirke();
document.write('</select>');
document.write('<select name="bezirke">');
document.write('<option>' + alle.text )
for(var i = 0; tmp[i]; i++)
{
document.write('<option>' + tmp[i].text )
}
document.write('</select>');
</script>
</form>
</body>
</html>
Struppi.
Hi Struppi!
Danke! Sieht ja sehr gut aus!
Nur wenn ich auf "-- alle --" wäre es gut wenn das gleiche passieren würde wie wenn ich auf "-- ganz Österreich --" klicke.
Jetzt muß ich nur schauen wie ich das in mein Ding einbinde*gg*
Weil die Bezirke und die Bundesländer ja schon von einer Datenbank ins Dropdown gefüllt werden..
wäre das dann mit document.write usw... ja nicht so gut..
müßt das jetzt irgendwie in meine funktion einbauen und mit onChange verbinden..
Danke
MFG
Markus
So kommen wir ja nicht weiter.
Hier ist das läuft soweit, wobei ich aber nicht weiss ob das das ist was du willst.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Testcase</title><script type="text/javascript">
var alle = new Option("-- alle --");
var ganz = new Option("-- Ganz Österreich --");
var Bundesland = new Array();Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = new Option("Eisenstadt-Stadt");
Bundesland.Burgenland[1] = new Option("Eisenstadt-Umgebung");Bundesland['Kärnten'] = new Array();
Bundesland['Kärnten'][0] = new Option("Feldkirchen");
Bundesland['Kärnten'][1] = new Option("Hermagor");function chkBundesland(form)
{
var index = form.bundesland.selectedIndex;
if(index) form.bezirke.length = 1;var b = form.bundesland.options[index].text;
if(b == "-- Ganz Österreich --") b = '';var bezirke = getBezirke(b);
for(var i = 0; bezirke[i]; i++)
{
form.bezirke.options[i + 1] = bezirke[i];
}
}
function getBezirke(b)
{
if(b) return Bundesland[b];
var tmp = new Array();
for(var x in Bundesland)
for(var i = 0; Bundesland[x][i]; i++) tmp[tmp.length] = Bundesland[x][i];
return tmp;
}
</script>
</head><body>
<form>
<script>
document.write('<select name="bundesland" onchange="chkBundesland(this.form);">');
document.write('<option>' + ganz.text )
for(var bundesland in Bundesland)
{
document.write('<option>' + bundesland )
}
var tmp = getBezirke();
document.write('</select>');
document.write('<select name="bezirke">');
document.write('<option>' + alle.text )
for(var i = 0; tmp[i]; i++)
{
document.write('<option>' + tmp[i].text )
}
document.write('</select>');
</script>
</form>
</body>
</html>Struppi.
Hi
Hab grad nochwas bemerkt!
Die Bezirke sind leider nicht alphabetisch sortiert! Wie könnte man das anstellen?
Sind jetzt zwar schon alpabetisch aber innerhalb eines Bundeslandes..das liegt aber daran weil ich sie alphabetisch in die Arrays eingetragen haben..
Wie könnte man das noch berichtigen?
Danke
MFG
Markus
Die Bezirke sind leider nicht alphabetisch sortiert! Wie könnte man das anstellen?
Du liest nicht gründlich: http://www.netzwelt.com/selfhtml/javascript/objekte/array.htm#sort
Struppi.
Hi
Doch habs gelesen aber die Bezirke innerhalb der Arrays sind ja schon sortiert..
ich müßte sie ja praktisch irgendwie nach dem od während dem Einfügen sortieren aber wie..
denn document.Formular.Bezirke.sort() geht ja leider nicht..
Wie und wo müßt ich denn das in diesem beispiel einbauen?
Danke
MFG
Markus
Och Mensch. probierst du irgendwas aus? verstehst du irgendwas?
Die Funktion getBezirke gibt dir ein Array zurück, folglich kannst du dieses auch sortieren.
Struppi.
Probiere schon die letzten Tage nurmehr*gg*
Nach deiner Beschreibung sollt ich hier drinnen was sortieren:
function getBezirke(b)
{
if(b) return Bundesland[b];
var tmp = new Array();
for(var x in Bundesland)
for(var i = 0; Bundesland[x][i]; i++) tmp[tmp.length] = Bundesland[x][i];
return tmp;
}
Hab schon soviel probiert mit .sort() komme aber leider nie auf nen grünen Zweig.. immer methode unterstützt es nicht oder es passiert einfach nix...
wo sollt ich das sort() denn einbauen in dem obigen code?
Bitte verzweifle nicht mit mir obwohl es für dich wahrscheinlich schwer fallt - sorry
MFG
Markus
Die Funktion getBezirke gibt dir ein Array zurück, folglich kannst du dieses auch sortieren.
Probiere schon die letzten Tage nurmehr*gg*
Nach deiner Beschreibung sollt ich hier drinnen was sortieren:
function getBezirke(b)
{
if(b) return Bundesland[b];
var tmp = new Array();
for(var x in Bundesland)
for(var i = 0; Bundesland[x][i]; i++) tmp[tmp.length] = Bundesland[x][i];
return tmp;
}Hab schon soviel probiert mit .sort() komme aber leider nie auf nen grünen Zweig.. immer methode unterstützt es nicht oder es passiert einfach nix...
wo sollt ich das sort() denn einbauen in dem obigen code?
gar nicht. Sondern wenn du das Array holst:
var bezitke = getBezirke(bundesland).sort();
Aber!!!!!
Das klappt nicht, weil du Options definierst, ich frage mich auch gerade warum eigentlich?
Bau das mal alles um.
Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = "Eisenstadt-Stadt";
Bundesland.Burgenland[1] = "Eisenstadt-Umgebung";
und dann wenn du die neuen option einfügst:
form.bezirke.options[i + 1] = new Option(bezirke[i]);
Dann klappt das auch mit der obigen sortierfunktion.
Struppi.
HI
Hab jetzt die new Option umgebaut so wie du gesagt hast:
Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = "Eisenstadt-Stadt";
Bundesland.Burgenland[1] = "Eisenstadt-Umgebung";und dann wenn du die neuen option einfügst:
form.bezirke.options[i + 1] = new Option(bezirke[i]);
Hab dann:
document.write('<select name="bundesland" onchange="chkBundesland(this.form);">');
document.write('<option>' + ganz.text )
for(var bundesland in Bundesland)
{
document.write('<option>' + bundesland )
}
var bezirke = getBezirke(bundesland).sort(); // Hier eingebaut!
var tmp = getBezirke();
document.write('</select>');
document.write('<select name="bezirke">');
document.write('<option>' + alle.text )
for(var i = 0; tmp[i]; i++)
{
document.write('<option>' + tmp[i].text )
}
document.write('</select>');
gar nicht. Sondern wenn du das Array holst:
var bezitke = getBezirke(bundesland).sort();
Hoffe ich habe es richtig eingebaut!
Wenn ich es so habe werden zwar alle Bundesländer ineinander sortiert also alle Bezirke in Wien und alle in Vorarlberg!
Das ist ja bereits im Array sortiert eingetragen...
Aber trotzdem fängt die Liste bei "ganz Österreich" mit dem ersten Bezirk aus Burgenland an.
Hab ich es falsch eingesetzt? Das ganze Dropdown sollte ja sortiert werden!
MFG
Markus
Also, was willst du?
Du willst alle Bezirke sortiert haben!
wo kriegst du alle Bezirke?
Z.b. hier:
var tmp = getBezirke();
(getBezirke() ohne Paramter holt die ganze Liste.)
Was hält dich davon ab dahinter ein sort() zu setzten?
Du musst h nur das machen was du möchtest, so eonfach ist programmieren.
Struppi.
Hi
nochmals Danke
Will einfach nur dass alle Bezirke immer sortiert im Dropdown erscheinen*gg*
Also, was willst du?
Genau
Du willst alle Bezirke sortiert haben!
Das stimmt!
var tmp = getBezirke().sort();
Es werden alle Bezirke sortiert aber nur am Anfang. wenn man ein im Bundesland was auswählt nicht mehr zb: ganz Österreich..
Mir ist aufgefallen seid die new Option aus den Arrays weg sind steht beim erstmaligen aufrufen in den Bezirken undeffinied.
Hab nur für "alle" und "ganz Österreich" die new Option gelassen:
Hier der derzeitige Code:
var alle = new Option("-- alle --");
var ganz = new Option("-- Ganz Österreich --");
var Bundesland = new Array();
Bundesland['Burgenland'] = new Array();
Bundesland.Burgenland[0] = "Eisenstadt-Stadt";
Bundesland.Burgenland[1] = "Eisenstadt-Umgebung";
Bundesland.Burgenland[2] = "Güssing";
Bundesland.Burgenland[3] = "Jennersdorf";
Bundesland.Burgenland[4] = "Mattersburg";
Bundesland.Burgenland[5] = "Neusiedl am See";
Bundesland.Burgenland[6] = "Oberpullendorf";
Bundesland.Burgenland[7] = "Oberwart";
Bundesland.Burgenland[8] = "Rust Stadt";
Bundesland['Kärnten'] = new Array();
Bundesland['Kärnten'][0] = "Feldkirchen";
Bundesland['Kärnten'][1] = "Hermagor";
Bundesland['Kärnten'][2] = "Klagenfurt-Land";
Bundesland['Kärnten'][3] = "Klagenfurt-Stadt";
Bundesland['Kärnten'][4] = "Spittal a. d. Drau";
Bundesland['Kärnten'][5] = "St. Veit a. d. Glan";
Bundesland['Kärnten'][6] = "Villach-Land";
Bundesland['Kärnten'][7] = "Villach-Stadt";
Bundesland['Kärnten'][8] = "Völkermarkt";
Bundesland['Kärnten'][9] = "Wolfsberg";
[usw]..
function chkBundesland(form)
{
var index = form.bundesland.selectedIndex;
if(index) form.bezirke.length = 1;
var b = form.bundesland.options[index].text;
if(b == "-- Ganz Österreich --") b = '';
var bezirke = getBezirke(b);
for(var i = 0; bezirke[i]; i++)
{
form.bezirke.options[i + 1] = new Option(bezirke[i]);
}
}
function getBezirke(b)
{
if(b) return Bundesland[b];
var tmp = new Array();
for(var x in Bundesland)
for(var i = 0; Bundesland[x][i]; i++) tmp[tmp.length] = Bundesland[x][i];
return tmp;
}
</script>
</head>
<body>
<form>
<script>
document.write('<select name="bundesland" onchange="chkBundesland(this.form);">');
document.write('<option>' + ganz.text )
for(var bundesland in Bundesland)
{
document.write('<option>' + bundesland )
}
var tmp = getBezirke().sort();
document.write('</select>');
document.write('<select name="bezirke">');
document.write('<option>' + alle.text )
for(var i = 0; tmp[i]; i++)
{
document.write('<option>' + tmp[i].text )
}
document.write('</select>');
</script>
</form>
</body>
wo kriegst du alle Bezirke?
Z.b. hier:
var tmp = getBezirke();
(getBezirke() ohne Paramter holt die ganze Liste.)
Was hält dich davon ab dahinter ein sort() zu setzten?
Jetzt hat die eigentliche Sortierung wenn ich sie über
alert(getBezirke().sort()) aufrufe noch einen Schönheitsfehler bei den Wiener Bezirken:
Bundesland['Wien'] = new Array();
Bundesland.Wien[0] = "Wien I.";
Bundesland.Wien[1] = "Wien II.";
Bundesland.Wien[2] = "Wien III.";
Bundesland.Wien[3] = "Wien IV.";
Bundesland.Wien[4] = "Wien V.";
Bundesland.Wien[5] = "Wien VI.";
Bundesland.Wien[6] = "Wien VII.";
Bundesland.Wien[7] = "Wien VIII.";
Bundesland.Wien[8] = "Wien IX.";
Bundesland.Wien[9] = "Wien X.";
Bundesland.Wien[10] = "Wien XI.";
Bundesland.Wien[11] = "Wien XII.";
Bundesland.Wien[12] = "Wien XIII.";
Bundesland.Wien[13] = "Wien XIV.";
Bundesland.Wien[14] = "Wien XV.";
Bundesland.Wien[15] = "Wien XVI.";
Bundesland.Wien[16] = "Wien XVII.";
Bundesland.Wien[17] = "Wien XVIII.";
Bundesland.Wien[18] = "Wien XIX.";
Bundesland.Wien[19] = "Wien XX.";
Bundesland.Wien[20] = "Wien XXI.";
Bundesland.Wien[21] = "Wien XXII.";
Bundesland.Wien[22] = "Wien XXIII.";
Wenn ich diese nun sortiere kommen die römischen Zahlen durcheinnander - ist ja auch klar.
Könnte man irgendwie sagen dass er die Wiener Bezirke zusätzlich so sortieren soll wie ursprünglich siehe oben deffiniert?
Wenn ich mich so gut wie du auskennen würde gerne*gg* Bin Leider nicht so ein Genie wie du*g*
Du musst h nur das machen was du möchtest, so eonfach ist programmieren.
Danke
MFG
Markus
Mir ist aufgefallen seid die new Option aus den Arrays weg sind steht beim erstmaligen aufrufen in den Bezirken undeffinied.
Weil du dort noch auf 'text' zugreifst, dass muss auch raus.
document.write('<option>' + tmp[i].text )
Jetzt hat die eigentliche Sortierung wenn ich sie über
alert(getBezirke().sort()) aufrufe noch einen Schönheitsfehler bei den Wiener Bezirken:Bundesland['Wien'] = new Array();
Wenn ich diese nun sortiere kommen die römischen Zahlen durcheinnander - ist ja auch klar.
Könnte man irgendwie sagen dass er die Wiener Bezirke zusätzlich so sortieren soll wie ursprünglich siehe oben deffiniert?
Das wird zu ja das würde gehen, aber das wird zu schwierig.
Du musst der sort() Funktion als Parameter eine referenz auf ein sortierfunktion übergeben (wie in selfhhtml auch beschrieben) und in dieser den String aufdröseln um dann zusätzlich nach den römischen Ziffern zu sortieren. Wie das aber geht weiss ich nicht.
Wenn ich mich so gut wie du auskennen würde gerne*gg* Bin Leider nicht so ein Genie wie du*g*
Lesen und lernen - hift dir auf den Weg dahin ;-)
Struppi.
HI
Struppi!
Möcht dir echt recht herzlich für deine Mühe danken
glaube jetzt funkt es so halbwegs*gg*
Das ist nun auch weg:
document.write('<option>' + tmp[i].text )
Die Sortierung geht sogar mit folgender Funktion:
function byIndex1(a,b)
{
if (a[1]<b[1]) return 1;
else if (b[1]<a[1]) return -1;
else return 0;
}
und dann sort(byIndex1)
Frage mich bitte nicht genau was das bedeuten soll vl weißt du eine Erklärung aber es geht*gg*
Das wird zu ja das würde gehen, aber das wird zu schwierig.
Du musst der sort() Funktion als Parameter eine referenz auf ein sortierfunktion übergeben (wie in selfhhtml auch beschrieben) und in dieser den String aufdröseln um dann zusätzlich nach den römischen Ziffern zu sortieren. Wie das aber geht weiss ich nicht.
Was sagst eigentlich zu meiner umgekehrten Variante:
Wenn ein Bezirk ausgewählt ist soll ein Bundesland erscheinen:
Könnt man sicher viel kürzen aber ich hab keine Ahnung*g*:
function chkBezirk()
{
var bezirk =document.Formular.Bezirk.selectedIndex;
if(document.Formular.Bezirk.length < 122) return true;
else
if(bezirk == 0) document.Formular.Bundesland.selectedIndex = 0;
if(bezirk == 12 || bezirk == 13 || bezirk == 26 || bezirk == 35 || bezirk == 55 || bezirk == 62 || bezirk == 63 || bezirk == 64 || bezirk == 70) document.Formular.Bundesland.selectedIndex = 1;
if(bezirk == 16 || bezirk == 29 || bezirk == 39 || bezirk == 40 || bezirk == 76 || bezirk == 79 || bezirk == 85 || bezirk == 86 || bezirk == 89 || bezirk == 119) document.Formular.Bundesland.selectedIndex = 2;
if(bezirk == 1 || bezirk == 3 || bezirk == 7 || bezirk == 19 || bezirk == 20 || bezirk == 30 || bezirk == 31 || bezirk == 42 || bezirk == 43 || bezirk == 50 || bezirk == 56 || bezirk == 57 || bezirk == 58 || bezirk == 61 || bezirk == 74 || bezirk == 78 || bezirk == 83 || bezirk == 90 || bezirk == 117 || bezirk == 118 || bezirk == 121) document.Formular.Bundesland.selectedIndex = 3;
if(bezirk == 5 || bezirk == 11 || bezirk == 17 || bezirk == 21 || bezirk == 24 || bezirk == 37 || bezirk == 51 || bezirk == 52 || bezirk == 53 || bezirk == 65 || bezirk == 68 || bezirk == 69 || bezirk == 73 || bezirk == 80 || bezirk == 81 || bezirk == 84 || bezirk == 87 || bezirk == 92 || bezirk == 93) document.Formular.Bundesland.selectedIndex = 4;
if(bezirk == 27 || bezirk == 71 || bezirk == 72 || bezirk == 77 || bezirk == 82 || bezirk == 120) document.Formular.Bundesland.selectedIndex = 5;
if(bezirk == 2 || bezirk == 8 || bezirk == 9 || bezirk == 14 || bezirk == 18 || bezirk == 22 || bezirk == 23 || bezirk == 25 || bezirk == 28 || bezirk == 36 || bezirk == 41 || bezirk == 46 || bezirk == 47 || bezirk == 49 || bezirk == 54 || bezirk == 59 || bezirk == 60 || bezirk == 66 || bezirk == 88 || bezirk == 91) document.Formular.Bundesland.selectedIndex = 6;
if(bezirk == 32 || bezirk == 33 || bezirk == 34 || bezirk == 38 || bezirk == 44 || bezirk == 45 || bezirk == 48 || bezirk == 67 || bezirk == 75) document.Formular.Bundesland.selectedIndex = 7;
if(bezirk == 4 || bezirk == 6 || bezirk == 10 || bezirk == 15) document.Formular.Bundesland.selectedIndex = 8;
if(bezirk == 94 || bezirk == 95 || bezirk == 96 || bezirk == 97 || bezirk == 98 || bezirk == 99 || bezirk == 100 || bezirk == 101 || bezirk == 102 || bezirk == 103 || bezirk == 104 || bezirk == 105 || bezirk == 106 || bezirk == 107 || bezirk == 108 || bezirk == 109 || bezirk == 110 || bezirk == 111 || bezirk == 112 || bezirk == 113 || bezirk == 114 || bezirk == 115 || bezirk == 116) document.Formular.Bundesland.selectedIndex = 9;
}
Ist das müll?
MFG
Markus
HI
Struppi!
Möcht dir echt recht herzlich für deine Mühe danken
Kein Problem. War auch eine halbwegs interssante Sache, sonst wär ich nicht drangeblieben ;-)
Die Sortierung geht sogar mit folgender Funktion:
function byIndex1(a,b)
{
if (a[1]<b[1]) return 1;
else if (b[1]<a[1]) return -1;
else return 0;
}und dann sort(byIndex1)
Ist das eine 1?
Dann kann sein das es nicht in jeden Browser funktioniert, ich weiss nicht genau welcher.
Frage mich bitte nicht genau was das bedeuten soll vl weißt du eine Erklärung aber es geht*gg*
Du sortierst hier nur nach dem 1. Buchstaben.
Was sagst eigentlich zu meiner umgekehrten Variante:
Wenn ein Bezirk ausgewählt ist soll ein Bundesland erscheinen:
Könnt man sicher viel kürzen aber ich hab keine Ahnung*g*:
[Müll]
Ist das müll?
Nö ;-)
aber extrem umständlich.
function searchBezirk(bezirk)
{
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}
sollte es auch tun.
Struppi.
Hi
Kein Problem. War auch eine halbwegs interssante Sache, sonst wär ich nicht drangeblieben ;-)
Danke nochmal
Die Sortierung geht sogar mit folgender Funktion:
function byIndex1(a,b)
{
if (a[1]<b[1]) return 1;
else if (b[1]<a[1]) return -1;
else return 0;
}und dann sort(byIndex1)
Ist schon eine 1! Wieso?
Ist das eine 1?
Warum soll es nicht in jedem Browser funktionieren?
Dann kann sein das es nicht in jeden Browser funktioniert, ich weiss nicht genau welcher.
[Müll]
Was meinst da mit [Müll]?
function searchBezirk(bezirk)
{
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}
Schaut sehr kurz aus - würde viel Platz sparen*g*
Tut es aber leider nicht - weil ich scheinbar schon wieder zu dumm bin das "bezirk" objekt zu deffinieren.
sollte es auch tun.
Habs so:
function chkBezirk(bezirk)
{
var bezirk =document.Formular.Bezirk.selectedIndex;
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}
und beim Bezrikdrodown onchange="chkBezirk(bezirk)"
Wo gehört jetzt var bezirk= deffiniert?
Hab da glaub ich immer grundsätzliche Probleme?
1.
Was ist der unterschied zwischen:
bezirk=
und
var bezirk=
2.
Was ist der unterschied ob bezirk innerhalb einer funktion od vorher deffiniert wird:
gibt ja die Möglichkeit:
am scriptanfang
in einer vorigen funktion
und in der aktuellen funktion
jeweils mit u ohne var?
Hab dazu auch schon im Selfhtml die Einleitung gelesen aber praktisch werd ich nicht schlau daraus..
Danke
MFG
Markus
Ist schon eine 1! Wieso?
Ist das eine 1?
Weil in dem Falle sortierst du nach dem 2. Buchstaben (fiel mir gerade erst auf) des Strings, da indizes imer bei null anfangen
Warum soll es nicht in jedem Browser funktionieren?
Dann kann sein das es nicht in jeden Browser funktioniert, ich weiss nicht genau welcher.
Weil manche Browser Strings nicht per indizes ansprechen können.
[Müll]
Was meinst da mit [Müll]?
Du fragtest: ist das Müll, das war aber nur ein Scherz, weil du so gefragt hast, ok? ;-)
function searchBezirk(bezirk)
{
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}Schaut sehr kurz aus - würde viel Platz sparen*g*
Tut es aber leider nicht - weil ich scheinbar schon wieder zu dumm bin das "bezirk" objekt zu deffinieren.sollte es auch tun.
Habs so:
function chkBezirk(bezirk)
{
var bezirk =document.Formular.Bezirk.selectedIndex;
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}und beim Bezrikdrodown onchange="chkBezirk(bezirk)"
Grmmmmppff, bezirk ist ein String, den du als Paramteter der Funktion übergibst.
alert(searchBezirk('was weiss ich'))
such nach dem Bundesland in dem 'was weiss ich' liegt.
Wo gehört jetzt var bezirk= deffiniert?
gar nirgends, bezirk ist ein Paramter, der beim Aufruf der Funktion definiert wird.
Dir fehlen wirklich absolute Grundlagen der Programierung. eine funktion ist sowas:
function fun1()
{
alert('eine Funktion:' + this);
}
Dieser kanst du Parameter übergeben:
function func1(p1, p2, p3)
{
alert('eine Funktion mit Parameter:' + this
}
Hab da glaub ich immer grundsätzliche Probleme?
1.
Was ist der unterschied zwischen:bezirk=
und
var bezirk=
mit var begrenz du die Gültigkeit einer Variabeln auf einen bestimmten Bereich, in JS innerhalb einer Funktion in anderen Programmiersprachen innerhalb eines Blockes (die geschweiften Klammern sind eine Block).
Das ist wichitg, weil du damit gleiche Variabeln namen öfters benutzen kannst.
var bezirk = "global"; # das ist überall gültig => globale Variabel
function test1()
{
alert(bezirk);
}
function test2()
{
var bezirk = 'lokal';
alert(bezirk);
}
test1();
test2();
Was ist der unterschied ob bezirk innerhalb einer funktion od vorher deffiniert wird:
Hab dazu auch schon im Selfhtml die Einleitung gelesen aber praktisch werd ich nicht schlau daraus..
Probieren hilft.
Struppi.
Hi
Habs noch immer nicht gechecked!
Wenn ich die Funktion die du da stehen hast einfüge tut sich nichts bei mir:
function chkBezirk(bezirk)
{
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}
und beim Bezrikdrodown onchange="chkBezirk(bezirk)"
Diese Probe habe ich mit:
alert(searchBezirk('Amstetten'))
gemacht -> Niederösterreich das wäre ok!
alert(searchBezirk('was weiss ich'))
nur von selbst kommt ja nix nach "bezirk" zumindest tut sich nichts wenn ich einen Bezirk auswähle!(muß ja irgendwie wissen welches Bundesland ausgewählt ist)
Er sollte dann ja ins 2 Dropdown das Bundesland schreiben...
Was mache ich falsch?
Hab ich was nicht deffiniert od einen wert zugewiesen?
Danke übrigens für die Beispiele von früher!
MFG
Markus
PS: Bald wird dieser Beitrag aus dem Forum sein..Siehst du dann noch was ich schreibe?(auch wenn er im Archiv ist?)
Hi
Habs noch immer nicht gechecked!
Wenn ich die Funktion die du da stehen hast einfüge tut sich nichts bei mir:
Warum sollte auch.
function chkBezirk(bezirk)
{
for(var b in Bundesland)
for(var i= 0; Bundesland[b][i];i++)
if(Bundesland[b][i] == bezirk) return b;
}
und beim Bezrikdrodown onchange="chkBezirk(bezirk)"
Diese Funktion, SUCHT das Bundesland in dem der Bezirk liegt, sonst nichts.
Er sollte dann ja ins 2 Dropdown das Bundesland schreiben...
Dann mach das doch.
Was mache ich falsch?
du erwartest, dass sich irgendwas tut ohne darüber im klaren zu sein, was sich tut.
Du hast eine Funktion, die dir aus deinen Arrays herraussucht, in welchem Bundesland, welcher Bezirk liegt.
Dann brauchst du eine Funktion, die in dem Select Feld das Bundesland sucht und auswählt.
Dann schreib die doch.
Struppi.
Guten Morgen Struppi!
Das ist aber leicht gesagt*gg*
Wenn ich es könnte gerne*gg*
Weiß aber nicht wie das gehen sollte?
Denke mal mit return b -> gibt das Bundesland zurück..
und wie sag ich jetzt wenn das bundesland so und so heißt dass er dann denn entsprechenden text aus dem dropdown auswählen soll?
Er sollte dann ja ins 2 Dropdown das Bundesland schreiben...
Dann mach das doch.
Und wie könnte diese aussehen?*gg*
Dann brauchst du eine Funktion, die in dem Select Feld das Bundesland sucht und auswählt.
MFG
Markus