Huhu,
erstmal danke für die bisherige Hilfe & Tips.
Aber ich glaube wir steuern hier in eine falsche Richtung. Mal vorweg: Der HTML-Code ist nach 4.01T valide und die erzeugte HTML-Datei 65 KB groß. Um die Fehlerseite jetzt so online zu präsentieren, müsste ich das komplette Projekt hochladen, MySQL-Datenbank einrichten usw. Das würde jetzt den Rahmen sprengen. Wenn es wirklich nicht anders geht, muss ich mich halt noch einmal melden, wenn das ganze online zu sehen ist (dauert) :(
Versuche jetzt aber hier nochmal genau die Funktionsweise zu erläutern:
Wir haben also das Formular und ein Select-Feld, in dem die zur Verfügung stehenden Voreinstellungen ausgewählt werden.
Select-Feld:
onchange="javascript:xajax_intern_xwars_settings_galasearch_change_search(this.options[this.selectedIndex].value)"
Xajax-Funktion:
function intern_xwars_settings_galasearch_change_search($searchID) {
global $db_zugriff;
$response = new xajaxResponse();
$xajaxControl = new xajax_control($response);
$xajaxControl->clear_inputerrors("form_intern_xwars_settings_galasearch");
if (!$xajaxControl->control_user_searches($searchID, true)) {
$response->addAssign("div_intern_main_statusmsg", "innerHTML", get_status_msg("common", "error"));
$response->addScript("document.getElementsByName('drop_intern_xwars_settings_galasearch_list')[0].options[0].selected = true");
$response->addScript("document.getElementsByName('drop_intern_xwars_settings_galasearch_editoptions')[0].options[1].selected = true");
$response->addScript("document.getElementById('form_intern_xwars_settings_galasearch').reset()");
return intern_set_created_time($response);
}
if ($searchID != "") {
$db_daten = $db_zugriff->query_first("SELECT `values`, `name` FROM ".xwtable_usersearch." WHERE id = '".$searchID."'");
$response->addScript("javascript:xwars_intern_xwars_settings_galasearch_fill_values('".mysql_real_escape_string($db_daten['values'])."')");
$response->addScript("document.getElementsByName('drop_intern_xwars_settings_galasearch_editoptions')[0].options[0].selected = true");
$response->addScript("document.getElementsByName('t_intern_xwars_settings_galasearch_new')[0].value = '".mysql_real_escape_string($db_daten['name'])."'");
} else {
$response->addScript("document.getElementById('form_intern_xwars_settings_galasearch').reset()");
}
return intern_set_created_time($response);
}
Die wichtige Zeile:
$response->addScript("javascript:xwars_intern_xwars_settings_galasearch_fill_values('".mysql_real_escape_string($db_daten['values'])."')");
Die aufgerufene Funktion:
function xwars_intern_xwars_settings_galasearch_fill_values(form_values) {
var val_arr = form_values.split('###|||###');
document.getElementsByName('t_intern_xwars_settings_galasearch_playername')[0].value = val_arr[0];
if (val_arr[1] == 'on') document.getElementsByName('check_intern_xwars_settings_galasearch_show_unsettled')[0].checked = true;
else document.getElementsByName('check_intern_xwars_settings_galasearch_show_unsettled')[0].checked = false;
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_uni')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_uni')[0].options[i].value == val_arr[2]) document.getElementsByName('drop_intern_xwars_settings_galasearch_uni')[0].options[i].selected = true;
}
document.getElementsByName('t_intern_xwars_settings_galasearch_ally')[0].value = val_arr[3];
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_gala')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_gala')[0].options[i].value == val_arr[4]) document.getElementsByName('drop_intern_xwars_settings_galasearch_gala')[0].options[i].selected = true;
}
document.getElementsByName('t_intern_xwars_settings_galasearch_system')[0].value = val_arr[5];
document.getElementsByName('t_intern_xwars_settings_galasearch_planet')[0].value = val_arr[6];
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_gala2')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_gala2')[0].options[i].value == val_arr[7]) document.getElementsByName('drop_intern_xwars_settings_galasearch_gala2')[0].options[i].selected = true;
}
document.getElementsByName('t_intern_xwars_settings_galasearch_system2')[0].value = val_arr[8];
document.getElementsByName('t_intern_xwars_settings_galasearch_planet2')[0].value = val_arr[9];
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_planet_type')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_planet_type')[0].options[i].value == val_arr[10]) document.getElementsByName('drop_intern_xwars_settings_galasearch_planet_type')[0].options[i].selected = true;
}
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_research')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_research')[0].options[i].value == val_arr[11]) document.getElementsByName('drop_intern_xwars_settings_galasearch_research')[0].options[i].selected = true;
}
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_building')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_building')[0].options[i].value == val_arr[12]) document.getElementsByName('drop_intern_xwars_settings_galasearch_building')[0].options[i].selected = true;
}
document.getElementsByName('t_intern_xwars_settings_galasearch_research_min')[0].value = val_arr[13];
document.getElementsByName('t_intern_xwars_settings_galasearch_research_max')[0].value = val_arr[14];
document.getElementsByName('t_intern_xwars_settings_galasearch_building_min')[0].value = val_arr[15];
document.getElementsByName('t_intern_xwars_settings_galasearch_building_max')[0].value = val_arr[16];
document.getElementsByName('t_intern_xwars_settings_galasearch_numresults')[0].value = val_arr[17];
if (val_arr[18] == 'on') document.getElementsByName('check_intern_xwars_settings_galasearch_unsettled_planet')[0].checked = true;
else document.getElementsByName('check_intern_xwars_settings_galasearch_unsettled_planet')[0].checked = false;
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_sort')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_sort')[0].options[i].value == val_arr[19]) document.getElementsByName('drop_intern_xwars_settings_galasearch_sort')[0].options[i].selected = true;
}
for (i = 0; i < document.getElementsByName('drop_intern_xwars_settings_galasearch_sortorder')[0].options.length; i++) {
if (document.getElementsByName('drop_intern_xwars_settings_galasearch_sortorder')[0].options[i].value == val_arr[20]) document.getElementsByName('drop_intern_xwars_settings_galasearch_sortorder')[0].options[i].selected = true;
}
}
@Cheatah:
Das mit der sequentiellen Abarbeitung ist mir schon klar. Ich meinte in diesem Zusammenhang aber ja einen Lösungsvorschlag zu diesem Problem:
FormularDiv verstecken
LadeDiv erzeugen & anzeigen
FormularDiv verändern
LadeDiv löschen
FormularDiv anzeigen
Da kommt es bei mir eben zu den o.g. "rucklern"
Besser wäre es:
StoreDiv erzeugen
Inhalt des FormularDivs in StoreDiv kopieren (geht mit innerHTML)
Mit Ladegrafik Inhalt des FormularDivs überschreiben (geht mit innerHTML)
Formular im StoreDiv verändern
Inhalt des FormularDivs mit den veränderten Formulardaten aus dem StoreDiv überschreiben (geht nicht mit innerHTML)
StoreDiv löschen
D.h. es wird von der Ladegrafik das Formular überschrieben und umgekehrt. Dabei kommt es zu keinen "rucklern", allerdings habe ich keine Möglichkeit das veränderte Formular wie o.g. zu kopieren, mit innerHTML funktioniert es (logischerweise) nicht.
Ich bin natürlich für jeden Performance - Tip dankbar, allerdings suche ich in erster Linie weiterhin eine Möglichkeit, dieses "überschreiben" mit den veränderten Formulardaten zu realisieren.
Gruß,
j0Shi