Problem: option aus select löschen

gut, dann probier das hier mal:
Javascript:
document.getElementById('list2').removeChild(document.getElementById('list')[i]);
 
Zuletzt bearbeitet von einem Moderator:
Für was ist das jetzt genau?
Welches ist list2 und was list1?

Weil das undefined ist.

*bin grad etwas überfordert* Ein bißchen mehr Erklärung des vorgeschlagenen wäre ganz hilfreich
 
sry, falscher Code und ich war im falschen Thread von dir;)
also:
Javascript:
function my_func(){
  var g_id =document.drucker.gebaeude.value;
  var anz_raeume = document.drucker.raum.options.length-1;
  
  for(var i=0;i<anz_raeume;i++){
      if(document.drucker.raum.options[i].id != g_id){
            document.drucker.raum.removeChild(document.drucker.raum.options[i]);
      }
      //document.Testform.Auswahl.options[document.Testform.Auswahl.length - 1] = null;
  }
  
}
Ich hole mir die liste und benutze die removeChild()-Funktion, ich übergebe ihr den aktuellel Listeneintrag.
 
Zuletzt bearbeitet von einem Moderator:
Okay so hatte ich es jetzt auch shcon reingeschrieben, aber da hab ich grad was sehr merkwürdiges erlebt.
und zwar habt meine Liste momentan 8 Elemente nach der Reihen habe die Folgende id:
5
10
2
10
3
3
3
3

so wenn ich jetzt das Gebäude auswähle, welches bei den Räumen die id 3 hat, dann müsste er in die if Anweisung 4 mal reingehen. Macht er aber nicht. Ich hab mir jetzt bei jedem eintritt die Id des Elementes ausgeben lassen und das einzige was er mit ausgibt ist 5 und 2. Was ist mit den beiden 10en

Hab eine 10 jetzt auf eine 9 geändert aber die ignoriert er auch woran liegt das?

Mein option sieht so aus
PHP:
<option value='".$help['r_nr']."' id='".$help['g_id']."'>".$help['r_nr']."</option>

Aber die Funktion mit dem remove würde gehen, auch wenn er bei mir anstatt 4 zu löschen nur 2 löscht
 
Eine ID ist immer einzigartig und darf nur einmal verwendet werden.
Denke da liegt das Problem, sobald du eine id öfter als einmal vergibst, gibt es Probleme.
 
Ja aber ich habe doch die eine 10 auf eine 9 geändert und das Problem bleibt weiterhin.

Ich verstehe auch nicht so recht, warum das for nicht so richtig geht er geht keine 8 mal rein.
sondern verschieden.

Wenn das mit der id nicht so recht geht, was könnte ich dann noch nehmen, um an dem Raum für JavaSCript kenntlich zu machen, zu welchem Gebäude der gehört?
 
Hi,

zähl in der for-Schleife rückwärts, d.h. von der Anzahl der Optionen bis Null. Wird die Schleife in der anderen Richtung durchlaufen, rücken die restlichen Optionen beim Löschen um einen Platz nach vorne und die Abbruchbedingung läuft ins Leere.

Willst du mehr Optionen löschen, so könntest du als Kriterium das Attribut class verwenden. In der if-Anweisung prüfst du mittels der Methode search und eines regulären Ausdrucks, ob die Option gelöscht werden soll.
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
function my_func(strSearch){
  var g_id =document.drucker.gebaeude.value;
  var anz_raeume = document.drucker.raum.options.length;

  // Regulären Ausdruck generieren
  var strPattern = new RegExp("\\b" + strSearch + "\\b");

  for(var i=(anz_raeume-1); i>=0; i--){
    if(document.drucker.raum.options[i].className.search(strPattern) != -1){
      document.drucker.raum.removeChild(document.drucker.raum.options[i]);
    }
  }
}
 //-->
</script>
</head>
<body>
<form name="drucker">
  <input type="text" name="gebaeude" value="id_02">
  <select name="raum">
    <option value="1" id="id_01">g 1</option>
    <option value="2" id="id_02" class="optClass">g 2</option>
    <option value="3" id="id_03">g 3</option>
    <option value="4" id="id_04">g 4</option>
    <option value="5" id="id_05" class="optClass">g 5</option>
  </select>
  <button onclick="my_func('optClass'); return false;">my_func()</button>
</form>
</body>
</html>
Ciao
Quaese
 
Mhh gute Idee mit dem Rückwärtszählen.
Habs auf Grund der Eile jetzt erstmal mit disabled gemacht. Werden das dann aber vllt. nächste Woche noch testen. Und melde mich dann nochmal wenns klappt oder wenns Probleme gibt.

Gruss
Evo
 
Zurück