tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
3491
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Tucker
    Tucker Tucker ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Riesa
    Beiträge
    428
    Hallo!

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    
    function setchecked(datein)
     {
      for (var i = 0; i < document.getElementById(datein).length; i++) 
      {
       document.getElementById(datein)[i].checked = true;
         }
     }
    Diese Funktion soll mir anhand eines übergebenes Strings (datein) alle Checkboxen mit gleichnamiger ID markieren. Allerdings kommt mir beim Aufruf dieser Funktion die Fehlermeldung, dass ein Objekt erwartet wird.

    Der Aufruf sieht so aus:
    Code html:
    1
    
    <input type="checkbox" name="hauptdatei[]" value="12286.imp" onselect="javascript: set_checked('12286.imp');" />

    Die Checkboxen, die markiert werden sollen, sehen alle in etwa so aus:
    Code html:
    1
    
    <input type="checkbox" id="12286.imp" name="up_datei[]" value="" />

    Weiß jemand einen Rat, woran es liegen kann?
     
    Wenn man der freudschen psychosexuellen Theorie über Eros und Tanatos glaubt, bleibt eine unbeantwortbare Frage: Was hat Programmieren mit der Libido und sexueller Befriedigung zu tun?

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    getElementById() besitzt keine length-Eigenschaft, und auch sonst ist es die falsche Wahl...da eine ID immer eindeutig ist.


    Stattdessen kannst du es mit getElementsByName() probieren.

    Wenn das nicht geht...ginge bspw. Folgendes:
    Gehe alle Checkboxen des Dokuments durch, und falls ihre ID die Betreffende ist, checke sie:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    function setchecked(datein)
    {
      for (i = 0; i < document.getElementsByTagName('input').length; ++i)
        {
          o=document.getElementsByTagName('input')[i];
          if(o.type=='checkbox' && o.id==datein)
            {
              o.checked=true;
            }
        }
    }
    ...das ist dann aber trotzdem ungültiges HTML wegen der mehrfach vergebenen ID, und auch wegen des Punktes in der ID...der ist dort nicht erlaubt...theoretisch. Praktisch gehts trotzdem
     

  3. #3
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Da eine ID dokumentweit einmalig ist, reicht folgende Funktionsdefinition:
    Code :
    1
    2
    3
    4
    
    function setCheckedByID( objID )
    {
        document.getElementById(objName).checked = true;
    }
    Für Elementnamen könntest du folgende benutzen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    function setCheckedByName( objName )
    {
        var elems = document.getElementsByName(objName);
        for(var i=0; i<elems.length; i++) {
            elems[i].checked = true;
        }
    }
     
    Markus Wulftange

  4. #4
    Avatar von Tucker
    Tucker Tucker ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Riesa
    Beiträge
    428
    Ich seh schon, ich muss etwas weiter ausholen. Ist ne ziemlich komplizierte Sache. Es handel sich hier eigentlich um ein PHP- Script. Dabei wird ein Ordner ausgelesen. Es gibt Hauptdatein (abcdef.imp) und zugehörige Anhangsdatein (abcdef_1.jpg). In einer Übersicht werden jetzt alle diese Datein ausgegeben. Zu den auptdatein jeweils die Anhangsdatein.
    Komplett alle Datein sind in einem Form.

    Bezwecken tu ich, dass alle Anhangsdatein ausgewählt werden, sobald ich die Hauptdatei ausgewählt habe. Aufgrund einer undefinierbaren Zuordnung bezüglich der Input-Namen (haupdatei[]) und der Anhangsdatein (ebenfalls Array), wollte ich die zugehörigen Checkboxen zur Hauptdatei alle mit der selben ID kenntlich machen.

    Ich gebe euch mal einen Auszug aus dem fertigen HTML - Dokument:
    HTML-Code:
    <form method="post" action="index.php?action=import" name="upload">
    <input type="hidden" name="do" value="" />
    <input type="checkbox" name="hauptdatei[]" value="12286.imp" onClick="setchecked('12286.imp');" /> 12286.imp
    <ul>
    <li>
    <input type="checkbox" id="12286.imp" name="up_datei[]" value="12286_1.jpg" />
    <a href="import/12286_1.jpg" class="link_more" target="_blank">12286_1.jpg</a>
    </li>
    <li>
    <input type="checkbox" id="12286.imp" name="up_datei[]" value="12286_2.jpg" />
    <a href="import/12286_2.jpg" class="link_more" target="_blank">12286_2.jpg</a>
    </li>
    <li>
    <input type="checkbox" id="12286.imp" name="up_datei[]" value="12286_3.pdf" />
    <a href="import/12286_3.pdf" class="link_more" target="_blank">12286_3.pdf</a>
    </li>
    </ul>
     
    Wenn man der freudschen psychosexuellen Theorie über Eros und Tanatos glaubt, bleibt eine unbeantwortbare Frage: Was hat Programmieren mit der Libido und sexueller Befriedigung zu tun?

  5. #5
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Hast du meine Funktion schon probiert? Damit gehts doch(zumindest bei mir).
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Wie bereits erwähnt, sind IDs dokumentweit einmalig. Daher ist dein Lösungsansatz nicht möglich. Gib den Elementen doch einfach neue Namen wie etwa „up_datei[12286.imp][]“.
     
    Markus Wulftange

  7. #7
    Avatar von Tucker
    Tucker Tucker ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Riesa
    Beiträge
    428
    Zitat Zitat von Gumbo
    Wie bereits erwähnt, sind IDs dokumentweit einmalig. Daher ist dein Lösungsansatz nicht möglich. Gib den Elementen doch einfach neue Namen wie etwa „up_datei[12286.imp][]“.
    Habe ich gerade eben gemacht. Nur kommt mir da der selbe Fehler. Die Funktion ieht nun so aus:
    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    
    function setchecked(datein)
     {
      for (i = 0; i < document.getElementsByName('up_datei['+datein+']').length; ++i)
         {
           document.getElementsByName('up_datei['+datein+']').checked = true;
         }
     }

    @Sven, deine Variate hat bei mir leider nicht funktioniert.
     
    Wenn man der freudschen psychosexuellen Theorie über Eros und Tanatos glaubt, bleibt eine unbeantwortbare Frage: Was hat Programmieren mit der Libido und sexueller Befriedigung zu tun?

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Du hast den Elementnamen nicht ganz übernommen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    function setchecked(datein)
    {
        var elems = document.getElementsByName("up_datei[" + datein + "][]");
        for( var i=0; i<elems.length; i++ ) {
            elems[i].checked = true;
        }
    }
     
    Markus Wulftange

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Zitat Zitat von Gumbo
    ....Daher ist dein Lösungsansatz nicht möglich.
    Meinst du meinen?
    Falls ja...dumm nur, dass er funktioniert
     

  10. #10
    Avatar von Tucker
    Tucker Tucker ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Riesa
    Beiträge
    428
    Auch damit kommt die Fehlermeldung, dass beim Aufruf der Funktion ein Objekt erwartet wird. Die Funktion wird nicht ausgeführt.
     
    Wenn man der freudschen psychosexuellen Theorie über Eros und Tanatos glaubt, bleibt eine unbeantwortbare Frage: Was hat Programmieren mit der Libido und sexueller Befriedigung zu tun?

  11. #11
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Dein Lösungsansatz scheint zwar praktisch möglich zu sein, ein solches Dokument wäre aber nicht valide. Denn wie du selbst schon erwähnt hast, ist eine ID immer eindeutig/einmalig. Vielleicht funktioniert das auch nur im Quirks-Modus.

    Mein Vorschlag funktioniert bei mir übrigens wunderbar, Tucker.
     
    Markus Wulftange

  12. #12
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Mmmh..dann hab ich wohl eine Sinnestäuschung: http://doktormolle.de/temp/247655-1.htm

    Die Frage war übrigens nicht, wie man valides HTML schreibt...aber wenn du unbedingt darauf bestehst...dann erwähne auch, daß dein Vorschlag mit den eckigen Klammern im name ebenso ungültiges HTML erzeugt

    Zitat Zitat von w3c
    ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
     

  13. #13
    Avatar von Tucker
    Tucker Tucker ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Riesa
    Beiträge
    428
    Zitat Zitat von Gumbo
    Dein Lösungsansatz scheint zwar praktisch möglich zu sein, ein solches Dokument wäre aber nicht valide. Denn wie du selbst schon erwähnt hast, ist eine ID immer eindeutig/einmalig. Vielleicht funktioniert das auch nur im Quirks-Modus.

    Mein Vorschlag funktioniert bei mir übrigens wunderbar, Tucker.
    Ich kann es ja nicht bei dir beurteilen. Aber bei mir wird die Funktion setchecked gar nicht abgearbeitet. Es kommt vorher die Fehlermeldung, dass beim Aufruf der Funktion, also beim Klick in das entsprechende Kästchen, ein Objekt erwartet wird.

    HTML-Code:
    onClick="javascript: setchecked('12286.imp');"
    Hier wird der Fehler ausgespuckt. Es steht dort, dass ein Objekt erwartet wird.
    Geändert von Tucker (20.06.06 um 21:37 Uhr)
     
    Wenn man der freudschen psychosexuellen Theorie über Eros und Tanatos glaubt, bleibt eine unbeantwortbare Frage: Was hat Programmieren mit der Libido und sexueller Befriedigung zu tun?

  14. #14
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Den Fehler sehe ich ein, Sven. Es ist eben niemand perfekt.

    Es ist allerdings komisch, dass der W3C Markup Validator diesbezüglich keinen Fehler meldet.
     
    Markus Wulftange

  15. #15
    Avatar von Tucker
    Tucker Tucker ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Riesa
    Beiträge
    428
    Ok. Hab den Fehler gefunden. In einer anderen vorangehenden unabhängigen Funktion gab es einen Fehler. Somit wurde scheinbar der restliche JS- Code nicht mehr geparst.
     
    Wenn man der freudschen psychosexuellen Theorie über Eros und Tanatos glaubt, bleibt eine unbeantwortbare Frage: Was hat Programmieren mit der Libido und sexueller Befriedigung zu tun?

Ähnliche Themen

  1. Checkboxen auswählen
    Von brainsucker im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 30.09.09, 12:13
  2. checkboxen alle abrufen/auswählen
    Von sandroP im Forum Javascript & Ajax
    Antworten: 7
    Letzter Beitrag: 04.10.07, 23:31
  3. Checkboxen auswählen und per Link löschen lassen...
    Von Kalma im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 13.12.06, 07:34
  4. mehrere Checkboxen
    Von daniel1234 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 08.12.06, 21:30
  5. Antworten: 0
    Letzter Beitrag: 01.09.06, 19:04