Hallo Siechfred,
Du hast die Array-Definition innerhalb der Funktion untergebracht, deshalb wird sie bei *jedem* Funktionsaufruf ausgeführt, was zu dem von dir beschriebenen Verhalten führen muss.
Lagere diesen Teil in eine eigene Funktion aus, die du onload und damit einmalig nach erfolgtem Laden des Dokumentes aufrufst.
Das habe ich auch schon probiert - leider ohne Änderung. Auch bei einer onLoad-Initialisierung wird die Länge falsch ausgegeben. Hier nochmal der Code mit dem onLoad-Konstrukt:
<script language="JavaScript" type="text/javascript" >
function doOnLoad()
{
// Array mit Originalinhalt der Selectbox wird erstellt
save_value = new Array();
save_value = document.searchform.users;
}
function searchSelectBox(form_name, form_element, search_value, do_reset)
{
search_value = document.searchform.search_value.value;
testIt();
if(do_reset == false)
{
for(i = 0; i < document.searchform.users.options.length; i++)
{
var look_for = document.searchform.users[i].firstChild.data.toLowerCase();
var result = look_for.indexOf(search_value.toLowerCase());
if(result == -1)
{
document.searchform.users.options[i] = null;
i--;
}
testIt();
}
}
else
{
alert("else!");
for(i = 0; i < save_value.length; i++)
{
alert(save_value[i].value);
document.searchform.users[i] = save_value[i];
}
}
testIt();
}
function testIt()
{
alert("testIt()-Länge: "+save_value.length);
}
</script>
<body onLoad="doOnLoad()">
<form name="searchform" action="" method="post">
<p>
<select name="users" size="10" multiple>
<option value="1">Max Mustermann</option>
<option value="2">Mona Mustermann</option>
<option value="3">Peter Gehtsgut</option>
<option value="4">Sabine Sauerzapfe</option>
<option value="5">Harald Schmidt</option>
<option value="6">Robert Enke</option>
<option value="7">Jarzi Barzi</option>
</select>
</p>
<p>
<input name="search_value" type="text" id="search_value">
<input type="submit" name="Submit" value="Go!" onClick="searchSelectBox('searchform', 'users', 'Mann')">
</p>
<p><a href="#" onClick="searchSelectBox('searchform', 'users', false, false)">Los</a> / <a href="#" onClick="testIt()">Zurück</a></p>
</form>
</body>
MfG
Timo