Timo: Selektbox mit Javascript durchsuchen

Beitrag lesen

Hallo Siechfred,

zunächst einmal vielen Dank für Deine Antwort. Ich bin jetzt schon ein bisschen weiter gekommen - leider sind aber auch wieder neue Schwierigkeiten aufgetreten.

Kombiniere das options-Objekt mit einer for-Schleife. Die Anzahl der einzelnen Optionen verrät dir die Eigenschaft length.

Ok - hab ich gemacht und funktioniert. Dachte nur, dass eine for-in-Schleife schöner wäre. Geht das mit einer for-in-Schleife gar nicht?

Entweder mit Hilfe des node-Objektes (die "Beschriftung" ist ein simpler Textknoten) oder etwas einfacher mit Hilfe von innerHTML.

Klappt beides - besten dank. Ist die Ansprache über das Node-Objekt mit document.searchform.users[i].childNodes[0].nodeValue denn richtig oder gibt es da noch eine elegantere Lösung?

Die Frage ist eher, ob du wirklich einen RegExp benötigst, oder ob dir http://de.selfhtml.org/javascript/objekte/string.htm#index_of=indexOf möglicherweise bessere Dienste leistet.

Prinzipiell reicht mir indexOf(). Leider wird hier wohl zwischen Groß- und Kleinschreibung unterschieden. Dies habe ich jetzt mit einem toLowerCase() umgangen.

Siehe Elemente aus einer Auswahlliste löschen.

Auch das entfernen der Objekte klappt jetzt. Leider sind nach dem Durchlaufen der Schleife aber wieder alle Elemente in der Selectbox. Mache ich beim Löschen noch etwas falsch?

Und noch eine Frage zu einer anderen Erweiterung: Besteht irgendwie die Möglichkeit, durch den Klick auf einen anderen Button die gelöschten Elemente wiederherzustellen, um die Selectbox wieder in den Ursprungszustand zu versetzen?

Anbei nochmal mein aktueller Code:

<script language="JavaScript">
function searchSelectBox(form_name, form_element, search_value)
{
 for(i = 0; i < document.searchform.users.options.length; i++)
 {
  alert(document.searchform.users[i].value);   alert(document.searchform.users[i].childNodes[0].nodeValue);

var look_for = document.searchform.users[i].childNodes[0].nodeValue.toLowerCase();
  var result = look_for.indexOf(search_value.toLowerCase());

alert(result);

if(result == -1)
  {
   document.searchform.users.options[i] = null;
   i--;
  }
 }
}
</script>

<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>
</form>

Nochmals vielen Dank für die Hilfe.

MfG

Timo