Linuchs: Wert aus HTML Tabelle auslesen

Hallo,

per Javascript möchte ich bei Klick auf eine HTML-Tabellenzeile die dortigen Werte in ein Formular kopieren.

Mir fehlt aber die Idee, wie ich an einen verlinkten Namen drankomme, also das, was zwischen <a></a> steht:

<tr onClick="kopiereGruppe(this);switchMarkierung(this)">
  <td>15.11.</td>
  <td>2015</td>
  <td>15:00</td>
  <td><a href='http://www.harald-krueger.de/'>Krüger Rockt!</a></td>
  <td><a href="http://remso.eu?TID=18900&amp;lg=de" title="TID=18900">Herbst R &#039;n&#039; R, Weingut Georg Breuer, 65385 Rüdesheim am Rhein</a></td>
</tr>
function kopiereGruppe( obj ) {
  childs = obj.getElementsByTagName("td");
  document.getElementsByName('tag')[0].value         = childs[00].innerHTML +childs[01].innerHTML;
  document.getElementsByName('homepage')[0].value    = childs[03].getElementsByTagName('a')[0].href;
}

Linuchs

  1. Da grübelt man eine Stunde oder mehr, und kaum ist die Frage sorgfältig formuliert und abgeschickt, kommt man selbst drauf:

    function kopiereGruppe( obj ) {
      childs = obj.getElementsByTagName("td");
      document.getElementsByName('tag')[0].value         = childs[00].innerHTML +childs[01].innerHTML;
      document.getElementsByName('homepage')[0].value    = childs[03].getElementsByTagName('a')[0].href;
      document.getElementsByName('gruppe')[0].value      = childs[03].getElementsByTagName('a')[0].innerHTML;
    }
    

    Linuchs

  2. Hallo

    Mir fehlt aber die Idee, wie ich an einen verlinkten Namen drankomme, also das, was zwischen <a></a> steht.

    Du suchst vielleicht node.textContent?

    Gruß,

    Orlok

  3. @@Linuchs

    <tr onClick="kopiereGruppe(this);switchMarkierung(this)">
    

    Dass JavaScript-Code nicht im HTML stehen sollte (also keine on…-Attribute), wurde dir schon gesagt?

      <td>15.11.</td>
      <td>2015</td>
      <td>15:00</td>
    

    Ein Datum (Zeitpunkt) auf 3 Tabellenzellen aufzuteilen ist wohl auch nur mäßig sinnvoll.

    function kopiereGruppe( obj ) {
    

    Ein deutschsprachiger Funktionsbezichner … – kann man machen.

      childs =

    Aber welche Sprache soll das sein?

    LLAP 🖖

    --
    „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
    „Hat auf dem Forum herumgelungert …“
    (Wachen in Asterix 36: Der Papyrus des Cäsar)
    1. Servus!

      Ein deutschsprachiger Funktionsbezichner … – kann man machen.

        childs =

      Aber welche Sprache soll das sein?

      Das ist Englisch: child's -> geht nicht mit Apostroph

      auf Deutsch: dem Kind sein ...

      Herzliche Grüße

      Matthias Scharwies

    2.   <td>15.11.</td>
        <td>2015</td>
        <td>15:00</td>
      

      Ein Datum (Zeitpunkt) auf 3 Tabellenzellen aufzuteilen ist wohl auch nur mäßig sinnvoll.

      Wir hatten hier die Diskussion, dass ein Wert mit CSS nicht erkannt werden kann. Und wohl auch ein Feld für CSS die kleinste Einheit ist.

      Leider muss ich also HTML bemühen, um das Jahr nicht anzeigen zu müssen (Layout ist vorgegeben). Dennoch brauche ich es für das Formular.

      tr>td:nth-of-type(2) {
        display: none;
      }
      

      Linuchs

      1. @@Linuchs

          <td>15.11.</td>
          <td>2015</td>
          <td>15:00</td>
        

        Ein Datum (Zeitpunkt) auf 3 Tabellenzellen aufzuteilen ist wohl auch nur mäßig sinnvoll.

        Wir hatten hier die Diskussion, dass ein Wert mit CSS nicht erkannt werden kann. Und wohl auch ein Feld für CSS die kleinste Einheit ist.

        Es muss aber kein Tabellenfeld sein.

        Leider muss ich also HTML bemühen, um das Jahr nicht anzeigen zu müssen (Layout ist vorgegeben).

        Wenn du HTML bemühst, sieht das Markup so aus:

        <td>
          <time datetime="2015-11-15T15:00+01:00">
            15.11.<span class="year">2015</span> 15:00
          </time>
        </td>
        

        Mit .year (oder time .year) kommst du an dein „Feld“, dass du (auf kleinen Viewports?) nicht anzeigen willst. Wenn du das Jahr niemals anzeigen willst, kannst du das span-Element natürlich ganz weglassen; das Jahr steht ja im datetime-Attribut.

        Dennoch brauche ich es für das Formular.

        Fürs Formular nimmst du den Wert aus dem datetime-Attribut; dieser liegt bereits in maschinenverarbeitbarem Format vor und du musst nichts zusammenstückeln.

        Beachte, dass die Zeitzone während der Sommerzeit +02:00 ist.

        LLAP 🖖

        --
        „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
        „Hat auf dem Forum herumgelungert …“
        (Wachen in Asterix 36: Der Papyrus des Cäsar)
  4. Hi,

    noch ein kleiner Hinweis:

      document.getElementsByName('tag')[0].value         = childs[00].innerHTML +childs[01].innerHTML;
    

    Vorsicht mit den führenden Nullen - die Zahl wird damit als Oktalzahl interpretiert. 010 ist dann nicht zehn, sondern acht ...

    cu,
    Andreas a/k/a MudGuard