m0jo: Problem mit createElement funktion

Hey...

Also ich hab folgende Javascript funktion die mir eine Tabelle erstellen soll die zu privaten Zwecken und spielereien einen Button ähnlich aussehen soll...Die Funktion ist unten...Aber ich weis nicht ob ich sie richtig gemacht habe dazu weis ich leider zu wenig über createElement()...kann aber auch keine ausführlicheren Details drüber finden...Ich hab den button einmal mit innerHTML und einmal eben wie hier unten...in innerHTML funktionierts aber das da unten führt er nicht aus...also...ich sehe praktisch nichts...woran liegt daS?
p.s.Danke für jede Hilfe im Vorraus

function _createPrettyTableWithJS(aDescriptor)
      {
  var tbl = document.createElement('table');
  tbl.setAttribute('style', 'border: 1px outset    #333333;padding:0px;width:150px;')
  var tblbody = document.createElement('tbody');
  tbl.appentChild(tblbody);
  var trX = document.createElement('tr');
  trX.setAttribute('style', 'padding:0px');
  tblbody.appendChild(trX);
  var TD1 = document.createElement('td');
  TD1.setAttribute('style' ,'background-color:yellow;width:50px;text-align:center')
  var btnZeichen = document.createTextNode('>');
  TD1.appendTextNode(btnZeichen);
  tblbody.appendChild(TD1);
  var TD2 = document.createElement('td');
  TD2.setAttribute('style' ,'background-color:#555555;width:100px;padding:3px;')
  var btnText = document.createTextNode(aDescriptor.label);
  TD2.appendTextNode(btnText);
  tblbody.appendChild(TD2);
                var btn = tbl;

return btn;
      }

  1. Hallo m0jo,

    tbl.setAttribute('style', 'border: 1px outset    #333333;padding:0px;width:150px;')

    hier würde ich tbl.style=.... schreiben. Aber zu Deinem Problem, ich habe nicht gefunden, wie Du die Tabelle ins Dokument hängst.

    Gruß, Jürgen

    1. Hallo m0jo,

      tbl.setAttribute('style', 'border: 1px outset    #333333;padding:0px;width:150px;')

      hier würde ich tbl.style=.... schreiben. Aber zu Deinem Problem, ich habe nicht gefunden, wie Du die Tabelle ins Dokument hängst.

      Gruß, Jürgen

      Also es geht hier um einen kleines Hobbyprojekt einer meiner Mitarbeiter.Die sache funktioniert folgendermassen:

      Man hat 3 buttons im document mit sagen wir mal einer declaration oder einer id.Da gibt es eine funktion die dannach sucht,da is auch ein descriptor drin und praktisch die alten buttons mit der von mir oben geschriebene funktion / tabelle austauscht.So in etwa ist das gedacht...Aber er tauscht mir das irgendwie nicht aus obwohl alles recht richtig aussieht...noch eine Frage...
      An der Funktion selbst...ist da irgendwas falsch oder ist die an sich falsch ? Ich hab mir da schon vorher mal dran versucht hatte aber große Probleme und das ist jetzt halt mal so das fertige Ergebniss...Und wenn da nichts falsch ist dann sollte das ja auch so funktionieren...nehme ich doch an...innerHTML macht es...

      1. Hello out there!

        Aber zu Deinem Problem, ich habe nicht gefunden, wie Du die Tabelle ins Dokument hängst.

        Die sache funktioniert folgendermassen:
        Man hat 3 buttons […]

        Nein, das war nicht gemeint, sondern: Wo kommt bei dir foo.appendchild(tbl) vor?

        See ya up the road,
        Gunnar

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
        1. foo.appendchild(tbl) vor?

          Natürlich camel case: foo.appendChild(tbl)

          Ingunnarid

          1. Also ich hab jetzt document.body.appendChild(tbl)
            reingehängt...Aber das bringt auch nichts...will so einfach nicht funktionieren...

            In der Fehlerkonsole vom Firebug im Firefox bekomme ich folgende Meldung:

            createPrettyTableWithJS is not defined

            • parent.setter.document.forms.control.select.value);

            kann mir einer sagen was das zu bedeuten hat?Also der erste satz ist selbst erklärend...aber der zweite...den versteh ich nicht so recht als anfänger...

            1. Hallo m0jo,

              createPrettyTableWithJS is not defined

              und im Ausgangsposting steht:

              function _createPrettyTableWithJS(aDescriptor)

              Du solltest dich um dem "_" kümmern. Und wenn es dann immer noch nicht geht, wäre die ganze Seite oder besser noch ein Link nicht schlecht. Dieses scheibchenweise Fehlersuchen bringt es irgendwie nicht.

              Gruß, Jürgen

              1. OOOOK
                ich hab den Fehler gefunden :) ich hatte doch an einer Stelle das "_" vergessen...der funktionesname wird nämlich 3 mal benutz...in der als function name selbst...dann weiter unten im dokument und noch in der selectbox da wo ich es vergessen hatte...das war aber nich der einzige Fehler...der hat mir noch gesagt das es ein appendTextNode nicht gibt...und da hab ich appendChild benutz...jetzt funktioniert es einwandfrei :)

                Danke nochmals für die Hilfe von allen...

                Gruß m0jo

                1. Hi,

                  ich hab den Fehler gefunden :) ich hatte doch an einer Stelle das "_" vergessen

                  Nein, Du hast _einen der_ Fehler gefunden.

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Schreinerei Waechter
                  O o ostern ...
                  Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            2. In der Fehlerkonsole vom Firebug im Firefox bekomme ich folgende Meldung:

              createPrettyTableWithJS is not defined

              • parent.setter.document.forms.control.select.value);

              Das ist die vollständige Meldung?

              kann mir einer sagen was das zu bedeuten hat?Also der erste satz ist selbst erklärend...aber der zweite...den versteh ich nicht so recht als anfänger...

              welcher zweite Satz?

              Aber die Bedeutung ist klar createPrettyTableWithJS ist nicht definiert, die Funktion heißt bei dir aber auch anders lt. deinem ersten Posting.

              Struppi.

              --
              Javascript ist toll (Perl auch!)
        2. Hello out there!

          Aber zu Deinem Problem, ich habe nicht gefunden, wie Du die Tabelle ins Dokument hängst.

          Die sache funktioniert folgendermassen:
          Man hat 3 buttons […]

          Nein, das war nicht gemeint, sondern: Wo kommt bei dir foo.appendchild(tbl) vor?

          See ya up the road,
          Gunnar

          ok scheint ich hab da was vergessen?Kannst du mir sagen wo das rein müsste?und was genau da stehen muss?verwirrt mich grad bishen...

          Gruß m0jo

      2. Hallo m0jo,

        Du erzeugst eine Tabelle.
        Du erzeugst ein tbody und hängst ihn in die Tabelle.
        Du erzeugst eine tr und hängst sie in den tbody.
        Du erzeugst zwei td und hängst sie in die tr.

        Und dann ist Schluss und die Tabelle wird verworfen. Du musst die Tabelle auch in das document oder in das entsprechende Element einhängen. Z.B. sei in Deinem Dokument ein div mit der ID "Platz_fuer_Tabelle", dann hängst Du die Tabelle mit document.getElementById("Platz_fuer_Tabelle").appendChild(tbl) in das Div.

        Gruß, Jürgen

        PS Und wenn es nicht funktioniert, ist ein Blick in die Fehler-/Javascript-Konsole oft hilfreich.

        1. Hello out there!

          Z.B. sei in Deinem Dokument ein div mit der ID "Platz_fuer_Tabelle", dann hängst Du die Tabelle mit document.getElementById("Platz_fuer_Tabelle").appendChild(tbl) in das Div.

          Evtl. auch einfach in den body hängen: document.body.appendChild(tbl)

          See ya up the road,
          Gunnar

          --
          „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
  2. Hi,

    var tblbody = document.createElement('tbody');

    tblbody ist als ein tbody-Element.

    var TD1 = document.createElement('td');

    TD1 ist also ein td-Element.

    tblbody.appendChild(TD1);

    td-Elemente dürfen keine Kinder von tbody sein.

    var TD2 = document.createElement('td');

    s.o.

    tblbody.appendChild(TD2);

    s.o.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.