Skeeve: Wildcard möglich bei Befehl getElementByID?

Beitrag lesen

Moin!

Hab grad dein Script eingebaut und ausprobiert -> einfach ein Traum!
Genau das wollte ich.

;-) Das freut mich.

Hab grad versucht zu verstehen wie genau das Script funktioniert

  
function markChildren( cb ) { // cb ist die CheckBox auf die geklickt wurde  
  var state= cb.checked; # speichert ob checked oder nicht  
  
  # Jetzt suchen wir das Elternelement der Checkbox. Genauer  
  # Wir suchen einen Vorfahren der ein <LI> ist  
  var prnt= cb; # Dazu fangen wir bei der box selbst an  
  
  # Solange es noch kein <LI> ist  
  while (prnt.nodeName != "LI" ) {  
    # holen wir uns den nächsten Vorfahren  
    # Wir hangeln uns also weiter hoch im Baum  
    prnt= prnt.parentNode;  
  }  
  # Das geht natürlich in die Hose, wenn die Checkbox nicht  
  # in einem <LI> liegt!  
  
  # Wenn wir dann das <LI> gefunden heben, holen wir uns  
  # alle Nachkommen die <INPUT> sind  
  var inputs= prnt.getElementsByTagName('INPUT');  
  
  # Dann arbeiten wir sie alle ab  
  # Anmerkung: Ich mache das gerne von oben nach unten, da nur  
  # ich dann auf 0 vergleichen muß um das Ende zu finden  
  # und die Länge des Arrays nur einmal am Anfang erfragen muß  
  for (var i=inputs.length; i--;) {  
    # wenn das aktuelle <INPUT> eine checkbox ist  
    if ( inputs[i].type == 'checkbox' ) {  
      # wird sie auf den gleichen status gesetzt  
      # wie unsere Ursprungsbox  
      inputs[i].checked= state;  
      # Anmerkung: Die Ursprungsbox wird hier mit erwischet,  
      # schadet aber nichts, da sie ja nur ihren momentanen  
      # Zustand nocheinmal bekommt.  
    }  
  }  
}  

Noch eine Frage sicherheitshalber: das Script ist unabhängig von vergebenen namen, ids und values der input Felder oder? (Wichtig für mich für die spätere Verwertung in PHP.)

vollkommen unabhängig von IDs. Nur abhängig von richtiger Verschachtellung und dem richtigen Element (LI). Wenn Du ein andres (DIV z.B.) nehmen willst, mußt Du das natürlich im Script anpassen.

Values sind auch egal, da ich die garnicht antaste. Es werden nur inputs die type checkbox haben beachtet und da nur die Eigenschaft "checked".

Nochmal zur Klarstellung: Ich habe das nicht auf IE getestet. Bitte selbst probieren, wenn der ein Thema sein sollte, ob das da klappt.
-- Skeeve