selected übergeben...
tm3
- javascript
Hallo!
Ich möchte bei meinem Javascript das selected übergeben und hab null Ahnung, wo ich das genau einsetzen muss... Das selected wird über eine sql datenbank an das script gesendet. Die jeweiligen Optionfelder haben eine art ID woran sie erkannt werden.
sql sendet also erst das land, dann das bundesland welches ich in folgendes Javascript schicken möchte:
<html>
<head><title>Länderwahl</title></head>
<script language="JavaScript">
function Load_LA(){
var arr_H1 = new Array(), arr_H2 = new Array();
arr_H1[1] = new Array (0, 1, 2, 3);
arr_H2[1] = new Array ("---- Keine Angabe ----","Deutschland", "Österreich", "Schweiz");
var x=0;
while (arr_H2[1][x] != null){
document.laender.la.options[x] = new Option (arr_H2[1][x], arr_H1[1][x]);
document.laender.la.options[x].className = "check_option";
x++;
}
}
function Load_BL(Auswahl){
var arr_D1 = new Array(), arr_D2 = new Array(); arr_A1 = new Array(), arr_A2 = new Array(); arr_CH1 = new Array(), arr_CH2 = new Array();
arr_D1[1] = new Array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -1);
arr_D2[1] = new Array ("Baden-Württemberg", "Bayern", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hessen", "Mecklenburg-Vorpommern", "Niedersachsen", "Nordrhein-Westfalen", "Rheinland-Pfalz", "Saarland", "Sachsen", "Sachsen-Anhalt", "Schleswig-Holstein", "Thüringen");
arr_A1[1] = new Array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1);
arr_A2[1] = new Array ("Burgenland", "Kärnten", "Niederösterreich", "Oberösterreich", "Salzburg", "Steiermark", "Tirol", "Vorarlberg", "Wien");
arr_CH1[1] = new Array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, -1);
arr_CH2[1] = new Array ("Aargau", "Appenzell Ausserrhoden","Appenzell Innerrhoden","Baselland","Basel-Stadt","Bern","Freiburg","Genf","Glarus","Graubünden","Jura","Luzern","Neuenburg","Nidwalden","Obwalden","Schaffhausen","Schwyz","Solothurn","St. Gallen","Tessin","Thurgau","Uri","Waadt","Wallis","Zug","Zürich","Liechtenstein","D-8238 Büsingen","I-6911 Campione");
document.laender.bl.length = 0;
document.laender.bl.options[0] = new Option ('---- Keine Angabe ----', 0);
document.laender.bl.options[0].className = "check_option";
if("1"==Auswahl){
var x=0;
document.laender.bl.length = 0;
while (arr_D2[1][x] != null){
if (arr_D1[1][x] != -1){
document.laender.bl.options[x] = new Option (arr_D2[1][x], arr_D1[1][x]);
document.laender.bl.options[x].className = "check_option";
}
x++;
}
}
if("2"==Auswahl){
var x=0;
document.laender.bl.length = 0;
while (arr_A2[1][x] != null){
if(arr_A1[1][x] != -1){
document.laender.bl.options[x] = new Option (arr_A2[1][x], arr_A1[1][x]);
document.laender.bl.options[x].className = "check_option";
}
x++;
}
}
if("3"==Auswahl){
var x=0;
document.laender.bl.length = 0;
while (arr_CH2[1][x] != null){
if (arr_CH1[1][x] != -1){
document.laender.bl.options[x] = new Option (arr_CH2[1][x], arr_CH1[1][x]);
document.laender.bl.options[x].className = "check_option";
}
x++;
}
}
}
</script>
</head>
<body onload="Load_LA();">
<form action="" method="post" name="laender" id="laender">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><font face="tahoma" size="2">Land: </font></td>
<td><select class="check_option" name="la" onChange="Load_BL(document.laender.la.options[la.selectedIndex].value);">
<option value="0" class="check_option">---- Keine Angabe ----</option>
</select></td>
</tr>
<tr>
<td><font face="tahoma" size="2">Bundesland: </font></td>
<td><select class="check_option" name="bl">
<option value="0" class="check_option">---- Keine Angabe ----</option>
</select></td>
</tr>
</table>
</form>
</body>
</html>
Vielleicht hat ja jemand einen Ratschlag für mich, wie ich das selected in meinem Script übergeben kann ohne dass das Script ansich beeinflusst wird. :-)
Habe es bereits mit defaultSelected und selected = true; probiert ... klappt zwar aber macht die dynamic des scripts irgendwie kaputt weil ich es scheinbar falsch positioniert habe.
Danke für jede Hilfe und Tipps!
Gruß,
TM3
Ich möchte bei meinem Javascript das selected übergeben und hab null Ahnung, wo ich das genau einsetzen muss... Das selected wird über eine sql datenbank an das script gesendet. Die jeweiligen Optionfelder haben eine art ID woran sie erkannt werden.
Sorry, aber ich habe kein Wort verstanden. Aus deinem Umfangreichen Quellcode geht nicht hervor, was du mit 'selected' meinst
sql sendet also erst das land, dann das bundesland welches ich in folgendes Javascript schicken möchte:
Was heißt sql sendet? Wohin?
Dein server sendet vielleicht irgendwas an den Browser,
<html>
<head><title>Länderwahl</title></head>
Da fehlt der DOCTYPE
<script language="JavaScript">
Da fehlt das Type attribut.
[ellenlanger CODE]
Es wäre besser, wenn du den Code auf den für deine Frage relevanten Teil kürzen würdest.
Vielleicht hat ja jemand einen Ratschlag für mich, wie ich das selected in meinem Script übergeben kann ohne dass das Script ansich beeinflusst wird. :-)
Ich versteh immer noch nicht, was du mit selected meinst, meinst du das HTML Attribut http://selfhtml.teamone.de/html/formulare/auswahl.htm#listen_vorselektiert um einen Listenfeldeintrag vorzuselektieren?
oder die JS Eigenschaft um festzustellen um ein Eintrag ausgewählt wurde http://selfhtml.teamone.de/javascript/objekte/options.htm#selected
(der vor allem in Mehrfachauswahlfeldern Sinn macht, ansonsten ist wohl selectedIndex die bessere Wahl)
Habe es bereits mit defaultSelected und selected = true; probiert ... klappt zwar aber macht die dynamic des scripts irgendwie kaputt weil ich es scheinbar falsch positioniert habe.
Was heißt falsch positioniert?
Stimmen die Werte aus der Datenbank nicht mit denen im JS überein.
Ich versteh auch nicht, warum du die Felder so umständlich mit JS zusammenbaust und damit eine Menge Leute die Seite nicht mehr nutzen können. Wenn du (offensichtlich) eine Serverseitige Scriptsprache nutzen kannst, was spricht dagegen diese zu nutzen?
Struppi.
Sorry, aber ich habe kein Wort verstanden.
A: Schade, dabei habe ich mich doch so deutlich ausgedrückt.
Naja, auf ein neues! :)
Was heißt sql sendet? Wohin?
Dein server sendet vielleicht irgendwas an den Browser,
A: Das weiss ich auch. Ich programmiere PHP mit MySQL schon seit
Jahren. Und ich weiß auch, wie ich die Werte übergeben muss.
Es wäre besser, wenn du den Code auf den für deine Frage
relevanten Teil kürzen würdest.
A: Prima. Hier die gekürzte Fassung:
function Load_LA(){
var arr_H1 = new Array(), arr_H2 = new Array();
arr_H1[1] = new Array (0, 1, 2, 3);
arr_H2[1] = new Array ("--- Keine Angabe ---","Deutschland", "Österreich", "Schweiz");
var x=0;
while (arr_H2[1][x] != null){
document.laender.la.options[x] = new Option (arr_H2[1][x], arr_H1[1][x]);
document.laender.la.options[x].className = "check_option";
x++;
}
}
Hier wird eine Schleife ausgeführt, die aus dem Array arr_A2[1][x] und den Array A1[1][x] die Werte der Optionfelder übergibt.
Natürlich hätte ich es wie du erwähnt hast auch in PHP programmieren können aber da es bei dem Versuch hier eh um eine Seite geht, bei der Javascript PFLICHT ist, (Sie würde nämlich sonst nicht laufen denn es handelt sich um einen Chat) fand ich diese Javascript-Möglichkeit am besten und auch am schnellsten.
So: Nun zu meinem Problem. Das Array wird ausgelesen, sobald man ein Land wählt. Wählt man Deutschland, werden die Bundesländer von Deutschland angezeigt, Wählt man Österreich, die Bundesländer von Österreich usw. In meiner Datenbank hab ich nun Datensätze wie z.b. "Land" = "Deutschland" "Bundesland" = "Schleswig-Holstein". Diese Daten sind Inhalt von einer sogenannten ID-Card eines jeden Users, die er sich anlegen kann. Hat der User nun alle Eingaben gemacht, kann er die Eingaben speichern.
Alles gut und schön.
Nur wenn er diese Eingaben nochmal bearbeiten möchte sollte auch das von ihm eingestellte Land und Bundesland wieder in den DropDownMenües selectiert sein ! Wie ich ein selected in ein Optionsfeld gebe weiß ich glaube ich schon seit 8 Jahren *ggg*
Aber ich weis nicht, wie ich das selected hier einfüge und vorallem wie ich auswerten kann, welches Land und welches Bundesland vorher eingegeben wurde. Meine Datenbank sendet dann den Namen des Bundeslandes und des Landes. Das wandel ich dann um: z.B.:
if(!isset($Land)) { $Land_2_JS = "0"; }
if($Land == "Deutschland") { $Land_2_JS = "1"; }
if($Land == "Österreich") { $Land_2_JS = "2"; }
if($Land == "Schweiz") { $Land_2_JS = "3"; }
Das selbe Schema bei den Bundesländern.
Aber wie selectiere ich das hier ??? Habe es so versucht:
function Load_LA(){
var arr_H1 = new Array(), arr_H2 = new Array();
arr_H1[1] = new Array (0, 1, 2, 3);
arr_H2[1] = new Array ("---- Keine Angabe ----","Deutschland", "Österreich", "Schweiz");
var x=0;
while (arr_H2[1][x] != null){
if(x=2){ // Sollte eigentlich als Land Österreich ermitteln
^^^ Hier würde ich das Ergebniss von der Datenbank eintragen.
document.laender.la.options[2] = new Option (arr_H2[1][2], arr_H1[1][2]);
document.laender.la.options[2].className = "check_option";
}
else{
document.laender.la.options[x] = new Option (arr_H2[1][x], arr_H1[1][x]);
document.laender.la.options[x].className = "check_option";
}
x++;
}
}
Mit dem obigen Beispiel hätte ich zumindestens schonmal vor, dem JavaScript zu ssagen, welches Land er selectieren "müsste" ... Das "müsste" deshalb in Anführungszeichen, weil ich nicht weiß wo man bei New Option den selected setzt. Dazu kommt noch, dass das obige Beispiel scheinbar einen Fehler verursacht und meinen Browser abstürzen lässt.
Ich versteh auch nicht, warum du die Felder so umständlich
mit JS zusammenbaust und damit eine Menge Leute die Seite
nicht mehr nutzen können. Wenn du (offensichtlich) eine
Serverseitige Scriptsprache nutzen kannst, was spricht
dagegen diese zu nutzen?
A: Das ist das schöne am programmieren: Es ist jedem selbst
überlassen was er macht und was er nutzt. ;)
MFG,
TM3
Was heißt sql sendet? Wohin?
Dein server sendet vielleicht irgendwas an den Browser,A: Das weiss ich auch. Ich programmiere PHP mit MySQL schon seit
Jahren. Und ich weiß auch, wie ich die Werte übergeben muss.
Trotz allem scheint es sind dir die Begriffe nicht so ganz klar. Was du mit PHP auf dem Server machst ist für JS im Client völlig unrelevant. Es hilft mir auch nicht beim verstehen deiner Frage, im gegenteil. Um dir bei dem JS Problem zu helfen ist es einzig und allein relevant was im Browser ankommt.
function Load_LA(){
var arr_H1 = new Array(), arr_H2 = new Array();
arr_H1[1] = new Array (0, 1, 2, 3);
arr_H2[1] = new Array ("--- Keine Angabe ---","Deutschland", "Österreich", "Schweiz");var x=0;
while (arr_H2[1][x] != null){document.laender.la.options[x] = new Option (arr_H2[1][x], arr_H1[1][x]);
document.laender.la.options[x].className = "check_option";
x++;
}
}Hier wird eine Schleife ausgeführt, die aus dem Array arr_A2[1][x] und den Array A1[1][x] die Werte der Optionfelder übergibt.
Ich weiß was di Funktion macht, aber der zusammenhang mit deinem Problem war nicht klar.
Natürlich hätte ich es wie du erwähnt hast auch in PHP programmieren können aber da es bei dem Versuch hier eh um eine Seite geht, bei der Javascript PFLICHT ist, (Sie würde nämlich sonst nicht laufen denn es handelt sich um einen Chat) fand ich diese Javascript-Möglichkeit am besten und auch am schnellsten.
Warum ist bei einem Chat JS Pflicht?
Verwechselst du JS mit Java?
Aber ich weis nicht, wie ich das selected hier einfüge und vorallem wie ich auswerten kann, welches Land und welches Bundesland vorher eingegeben wurde. Meine Datenbank sendet dann den Namen des Bundeslandes und des Landes. Das wandel ich dann um: z.B.:
if(!isset($Land)) { $Land_2_JS = "0"; }
if($Land == "Deutschland") { $Land_2_JS = "1"; }
if($Land == "Österreich") { $Land_2_JS = "2"; }
if($Land == "Schweiz") { $Land_2_JS = "3"; }
Das ist PHP und hier steckt kein einizges Stückchen JS drin. Tut mir wirklich leid ich seh den Zusammenhang mit deinem Problem nicht.
Aber wie selectiere ich das hier ??? Habe es so versucht:
function Load_LA(){
var arr_H1 = new Array(), arr_H2 = new Array();
arr_H1[1] = new Array (0, 1, 2, 3);
arr_H2[1] = new Array ("---- Keine Angabe ----","Deutschland", "Österreich", "Schweiz");var x=0;
while (arr_H2[1][x] != null){if(x=2){ // Sollte eigentlich als Land Österreich ermitteln
^^^ Hier würde ich das Ergebniss von der Datenbank eintragen.
Hier steht x gleich zwei, also ein Zuweisung, die immer wahr ist.
document.laender.la.options[2] = new Option (arr_H2[1][2], arr_H1[1][2]);
document.laender.la.options[2].className = "check_option";
}
else{
document.laender.la.options[x] = new Option (arr_H2[1][x], arr_H1[1][x]);
document.laender.la.options[x].className = "check_option";
}
x++;
}
}Mit dem obigen Beispiel hätte ich zumindestens schonmal vor, dem JavaScript zu ssagen, welches Land er selectieren "müsste" ... Das "müsste" deshalb in Anführungszeichen, weil ich nicht weiß wo man bei New Option den selected setzt. Dazu kommt noch, dass das obige Beispiel scheinbar einen Fehler verursacht und meinen Browser abstürzen lässt.
Der IE hat einige Probleme mit dynamischen Selectlisten (zumindest war das bisher immer so).
Ansonsten gewinne ich ab hier den Eindruck, das du lediglich eine Erklärung suchst, welche Parametern man mit new Option nutzen kann. Da wärst du schnell bei selfhtml (oh Wunder) fündig geworden http://selfhtml.teamone.de/javascript/objekte/options.htm#neue_elemente
Das das Beispiel einen Fehler produziert, bzw nicht so funktiniert wie du es möchtest ist auch klar, da die if Bedingung ja falsch ist.
Ich versteh auch nicht, warum du die Felder so umständlich
mit JS zusammenbaust und damit eine Menge Leute die Seite
nicht mehr nutzen können. Wenn du (offensichtlich) eine
Serverseitige Scriptsprache nutzen kannst, was spricht
dagegen diese zu nutzen?A: Das ist das schöne am programmieren: Es ist jedem selbst
überlassen was er macht und was er nutzt. ;)
Klar solange man es kann.
Aber wie gesagt ich hab den Eindruck, das du einer Menge Besucher die Benutzung deiner Seite unnötig verbaust - erschwerst. Aber solange du der Meinung bist es verkraften zu können, bleibt es dir überlassen.
Struppi.
Warum ist bei einem Chat JS Pflicht?
Verwechselst du JS mit Java?
Nein verwechsel ich nicht. Der Chat basiert auf C++ und verwendet JavaScript um diverse Funktionen wie automatisches Nachscrollen etc. zu ermöglichen. Es ist ein Webchat der eine gestreamte Realtime HTML ausgibt und nicht nur aus 3 Zeilen Java Code besteht wie ein Chat-Applet sondern hat sage und schreibe 20.000 Zeilen reinsten C++ Code! Die ChatBase funktioniert prächtig! Auch bei Netscape oder Mozilla etc.
Bislang konnte jeder darin chatten und hatte mit den JavaScripten die darin verwendet werden keine Probleme. OK, wer JavaScript deaktiviert hat, der hat selbst Schuld aber wenn jemand den Strom deaktiviert hat kann er auch keinen PC anschalten oder?
Shit happens halt.
Aber mein Problem hat sich nun gelöst denn ich kann ja die JavaScript Arrays auch mit PHP erzeugen lassen und somit kann ich die Anordnung der Arrays auch bestimmen und z.b. Das Land sowie das Bundesland der letzt gemachten Eingabe auch wieder übergeben lassen insofern der User seine Daten mal ändern möchte. Mein Problem war nämlich schlicht und einfach, dass ich in den DropDowns wieder das stehen haben möchte, was der User zuvor eingegeben hatte... Sprich: Wenn er Deutschland als Land definiert hatte und Schleswig Holstein als Bundesland sollte es beim editieren der "ID-Card" auch wieder Deutschland und Schleswig Holstein selectiert sein und nicht "---- Keine Angabe ----" ...
Aber wie gesagt ... Das Problem habe ich nun gelöst indem das das Javascript und deren Arrays dynamisch mit PHP erzeugen lasse.
Dennoch danke ich dir für deine Zeit :-)
Gruß,
TM3
Bislang konnte jeder darin chatten und hatte mit den JavaScripten die darin verwendet werden keine Probleme. OK, wer JavaScript deaktiviert hat, der hat selbst Schuld aber wenn jemand den Strom deaktiviert hat kann er auch keinen PC anschalten oder?
Was das eine mit dem anderen zu tun hat wirst du wohl Wissen. aber mein Browser funktioniert einwandfrei auch ohne JS. Ganz im gegenteil er funktioniert sogar besser ohne.
Shit happens halt.
Naja, da selbst Microsoft hin und wieder empfiehlt ActiveScripting abzuschalten (es gibt immer noch unbeseitigte Sicherheitslöcher im IE), ist es eher so, dass du damit rechnen mußt das immer mehr auf deinen Service verzichten müssen.
Aber mein Problem hat sich nun gelöst denn ich kann ja die JavaScript Arrays auch mit PHP erzeugen lassen und somit kann ich die Anordnung der Arrays auch bestimmen und z.b. Das Land sowie das Bundesland der letzt gemachten Eingabe auch wieder übergeben lassen insofern der User seine Daten mal ändern möchte. Mein Problem war nämlich schlicht und einfach, dass ich in den DropDowns wieder das stehen haben möchte, was der User zuvor eingegeben hatte... Sprich: Wenn er Deutschland als Land definiert hatte und Schleswig Holstein als Bundesland sollte es beim editieren der "ID-Card" auch wieder Deutschland und Schleswig Holstein selectiert sein und nicht "---- Keine Angabe ----" ...
Du hast irgendwie ein Talent relativ unverständlich zu erklären. Wenn ich dich richtig verstehe, willst einfach ein Selectliste ausgeben wo ein Wert vorselektiert ist.
In etwa so (in Perl kann kein PHP):
my $land = '....'; # <-- Ergebnis aus der DB
print <<HTML;
<script>
var liste = new Array(.........);
function setListe(default)
{
for(var i = 0;i < liste.length;i++)
{
var n = new Option(liste[i], liste[i], (default == liste[i]));
document.forms[xxxx].selectFeld.options[document.forms[xxxx].selectFeld.length] = n;
}
}
</script>
....
<body onload="setListe('$land');">
....
HTML
ungetestet.
Struppi.