iuna: wenn zelleninhalt leer dann...

Liebe Leute,
als absoluter Javascript Laie stehe ich vor folgendem Problem:

Ich habe in der Datenbank ein Tabellenfeld dass dazu dient eine Anweisung geben zu können ob eine Tabelle angezeigt wird oder nicht.

Ich habe es geschafft, dass ein teil der Tabelle ausgeblendet wird mit folgendem Code:

<TABLE  cellSpacing=0 cellPadding=0 width="100%" border=0 class="pressetable">  
<TBODY>  
<TR>  
<TD class=pressetitel>  
<script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')  
</script>  
</TD></TR></TBODY></TABLE>

Jetzt habe ich versucht document.write und dann die gesamte Tabelle reinzuschreiben. Ich möchte nämlich die gesamte Tabelle ausblenden. Das läßt er mich aber nicht. Es wird wenn ich das mache alles ausgeblendet.

Soweit ich weiss kann ich sehr wohl HTML Code auch in das document.write schreiben. Ich habe schon gegoogelt udn alles was ich gefunden habe war nicht wirklich zutreffend für meine Geschichte.

Vielleicht ist es ja auch möglich einfach zu sagen - wenn dieses Tabellenfeld leer ist, dann gib der Tabelle die CSS Anwesiung display: none.

Aber ich wüßte nicht wie das geht!
Könnte mir vielleicht jemand bei diesem Problem behilflich sein???

Ich wäre euch sehr dankbar!
Liebe Grüße
Daniela

  1. @@iuna:

    nuqneH

    Ich habe in der Datenbank ein Tabellenfeld dass dazu dient eine Anweisung geben zu können ob eine Tabelle angezeigt wird oder nicht.

    Warum soll die Tabelle im HTML-Code stehen, wenn sie nicht angezeigt werden soll? Ich denke, du solltest das nicht clientseitig (JavaScript), sondern serversetig (PHP?) lösen, also den HTML-Code für die Tabelle in dem Fall gar nicht erst generieren.

    So ganz bin ich aus deiner Problembeschreibung aber nicht schlau geworden.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hallo Qapla,

      Vielen dank für deine Antwort

      Warum soll die Tabelle im HTML-Code stehen, wenn sie nicht angezeigt werden soll? Ich denke, du solltest das nicht clientseitig (JavaScript), sondern serversetig (PHP?) lösen, also den HTML-Code für die Tabelle in dem Fall gar nicht erst generieren.

      So ganz bin ich aus deiner Problembeschreibung aber nicht schlau geworden.

      Ich kann in das CMS nicht anders eingreifen als so. Ist nicht wirklich eine elegante Lösung aber es ist eine.

      Die Tabelle soll ja nicht angezeigt werden.
      Im backend hat der Kunde die Möglichkeit zu sagen - zeig die Tabelle an oder eben nicht.

      Das ist das Tabellenfeld - ist dieses leer - wird die tabelle angezeigt - schreibt er was rein, wird sie nicht angezeigt. Hoffe es war so verständlicher ausgedrückt? ;o)

      Das Java script funktioniert für einen teil aber nicht für die gesamte Tabelle. Warum auch immer.

      Liebe Grüße
      Daniela

      Qapla'

      1. servus Iuna123,

        Das Java script funktioniert für einen teil aber nicht für die gesamte Tabelle. Warum auch immer.

        Das Javascript funktioniert nicht, das Ergebnis stimmt nur zufällig mit deinen Erwartungen überein.

        <script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')
        </script>

        1. type-Attribut fehlt
        2. die Abfrage vergleicht, ob der String "tabellenfeld" gleich dem String "" ist. Natürlich ist er das nicht. Es gibt keine Referenz zur Tabellenzelle. Suche mal nach document.getElementById, das hilft dir bestimmt.

        der wurzelbert

        --
        Ist es ein Vogel?
        Ist es ein Flugzeug?
        Nein, es ist Reis, Baby!
        1. servus Iuna123,

          Das Java script funktioniert für einen teil aber nicht für die gesamte Tabelle. Warum auch immer.

          Das Javascript funktioniert nicht, das Ergebnis stimmt nur zufällig mit deinen Erwartungen überein.

          <script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')
          </script>

          1. type-Attribut fehlt
          2. die Abfrage vergleicht, ob der String "tabellenfeld" gleich dem String "" ist. Natürlich ist er das nicht. Es gibt keine Referenz zur Tabellenzelle. Suche mal nach document.getElementById, das hilft dir bestimmt.

          Wieso? Wenn das Tabellenfeld leer ist, dann schreib das.
          Wuerde es umgekehrt funktionieren?

          Wenn was drinnen steht - dann schreib das?

          Ich such jetzt mal nach deinem Vorschlag ;o)
          Vielleicht finde ich was.
          Liebe Gruesse und danke für den Tipp.
          Daniela

          1. servus Iuna123,

            Wieso? Wenn das Tabellenfeld leer ist, dann schreib das.
            Wuerde es umgekehrt funktionieren?

            Wenn was drinnen steht - dann schreib das?

            du hast gerade noch ein Verständnisproblem. Hier dein Code:

            <TABLE  cellSpacing=0 cellPadding=0 width="100%" border=0 class="pressetable">
            <TBODY>
            <TR>
            <TD class=pressetitel>
            <script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')
            </script>
            </TD></TR></TBODY></TABLE>

            Was ist 'tabellenfeld'? Du denkst, es ist die Zelle, in der sich das Script befindet.
            Ist es nicht. 'tabellenfeld' ist ein einfacher String, ohne jeden Bezug zur Tabelle/Zelle.

            der wurzelbert

            --
            Ist es ein Vogel?
            Ist es ein Flugzeug?
            Nein, es ist Reis, Baby!
            1. Morgen ;o)

              <TABLE  cellSpacing=0 cellPadding=0 width="100%" border=0 class="pressetable">
              <TBODY>
              <TR>
              <TD class=pressetitel>
              <script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')
              </script>
              </TD></TR></TBODY></TABLE>

              Was ist 'tabellenfeld'? Du denkst, es ist die Zelle, in der sich das Script befindet.

              Nein glaub ich nicht ;o)

              Ist es nicht. 'tabellenfeld' ist ein einfacher String, ohne jeden Bezug zur Tabelle/Zelle.

              tabellenfeld ist ein feld dass aus der Datenbank abgefragt wird.
              Wuerde an dieser stellen nur tabellenfeld stehen wuerde auf der webseite hier der inhalt dieser tabelle (datenbanktabelle) angezeigt werden.

              ;o)
              Liebe Grüße
              Daniela

              der wurzelbert

  2. Mahlzeit iuna,

    als absoluter Javascript Laie stehe ich vor folgendem Problem:

    Leider scheint es wirklich so zu sein. Eigne Dir bitte zumindest die Grundlagen an - zumindest solltest Du wissen, *wie*, *wo* und *wann* Javascript-Code *von wem* ausgeführt wird.

    Ich habe in der Datenbank ein Tabellenfeld dass dazu dient eine Anweisung geben zu können ob eine Tabelle angezeigt wird oder nicht.

    Das ist für (Client-seitigen) Javascript-code herzlich irrelevant, ob irgendwo irgendein Datenbankfeld existiert ... solange Du dessen Inhalt nicht in irgendeiner Form durch den Webserver an den Browser ausliefern lässt. Erst dann könnte man per Javascript darauf zugreifen.

    <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0 class="pressetable">

    Tu Dir selbst einen Gefallen und vereinheitliche Deine Schreibweise von Element- und Attributbezeichnern sowie Attributwerten. Sinnvoll wäre z.B. XHTML-Konformität: Element- und Attributbezeichner immer klein und Attributwerte immer in Anführungszeichen:

    <table cellspacing="0" cellpadding="0" width="100%" border="0" class="pressetable">

    IMHO macht das den Code deutlich leichter lesbar. Nicht nur für Menschen, sondern auch für XML-Parser.

    <TD class=pressetitel>
    <script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')
    </script>

    Ich "übersetze" mal kurz:

    Wenn die Zeichenkette mit dem Inhalt 'tabellenfeld' gleich einer leeren Zeichenkette ist (was also *NIEMALS* eintreffen sollte), dann schreibe jetzt in das aktuelle Dokument folgende Zeichenkette: '<P><A href="einlink">text</A></P>'.

    Die Tabellenzelle (in der sich dieser Code befindet) wird also *IMMER* leer sein.

    Ich schätze mal, dass das *NICHT* das ist, was Du willst.

    Was willst Du also stattdessen? Beschreibe das bitte einmal mit handelsüblichen Worten.

    Jetzt habe ich versucht document.write und dann die gesamte Tabelle reinzuschreiben.

    Wann, wie und wo?

    Ich möchte nämlich die gesamte Tabelle ausblenden.

    Ausblenden? Wie jetzt? Dafür gibt's doch die CSS-Eigenschaft namens "http://de.selfhtml.org/css/eigenschaften/positionierung.htm#display@title=display".

    Das läßt er mich aber nicht. Es wird wenn ich das mache alles ausgeblendet.

    Wenn Du dabei der gleichen "Logik" wie der o.g. folgst, ist das ja auch sonnenklar (siehe mein "Übersetzungsversuch") ...

    Vielleicht ist es ja auch möglich einfach zu sagen - wenn dieses Tabellenfeld leer ist, dann gib der Tabelle die CSS Anwesiung display: none.

    Das wäre sinnvoll. Das müsste dann aber sinnvollerweise Server-seitig geschehen. Und da wäre Javascript der falsche Ansatz.

    Man könnte natürlich nachträglich mittels Javascript der Tabelle eine entsprechende CSS-Eigenschaft setzen - dazu müsste dann aber das im Browser laufende Javascript wissen, wie dieses Tabellenfeld in der Datenbank aussieht ... also musst Du seinen Inhalt in irgendeiner Form an den Browser ausgeben, damit der Javascript-Code darauf zugreifen kann.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. @@EKKi:

      nuqneH

      Vielleicht ist es ja auch möglich einfach zu sagen - wenn dieses Tabellenfeld leer ist, dann gib der Tabelle die CSS Anwesiung display: none.

      Das wäre sinnvoll.

      Nein, das glaube ich nicht.

      Das müsste dann aber sinnvollerweise Server-seitig geschehen. Und da wäre Javascript der falsche Ansatz.

      Ja, das glaube ich auch.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Mahlzeit Gunnar Bittersmann,

        Vielleicht ist es ja auch möglich einfach zu sagen - wenn dieses Tabellenfeld leer ist, dann gib der Tabelle die CSS Anwesiung display: none.

        Das wäre sinnvoll.

        Nein, das glaube ich nicht.

        Das bezog sich nur auf das "display: none" für die Nicht-Darstellung der Tabelle (statt irgendeines obskuren "document.write()"-Geraffels).

        Schließlich kann es ja sein, dass die Tabelle zwar erstmal nicht sichtbar sein soll, später dann aber sichtbar gemacht werden können soll ... oder so.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. Hallo,

      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0 class="pressetable">
      Tu Dir selbst einen Gefallen und vereinheitliche Deine Schreibweise von Element- und Attributbezeichnern sowie Attributwerten.

      +1

      <script>if('tabellenfeld'=='') document.write('<P><A href="einlink">text</A></P>')
      </script>

      Ich "übersetze" mal kurz:
      Wenn die Zeichenkette mit dem Inhalt 'tabellenfeld' gleich einer leeren Zeichenkette ist (was also *NIEMALS* eintreffen sollte), dann schreibe jetzt in das aktuelle Dokument folgende Zeichenkette: '<P><A href="einlink">text</A></P>'.

      Erschwerend kommt dazu, dass bereits das erste Vorkommen von "</" (hier beim schließenden a-Tag) das Ende des Scripts bedeutet. Das JS-Statement ist also unvollständig und damit syntaktisch falsch.
      Wenn die Zeichenfolge "</" innerhalb von Javascript-Code vorkommt, muss daher der Slash maskiert werden. Hier also: "</a></p>".

      Ciao,
       Martin

      --
      Nein, es ist nicht wahr, dass bei der Post Beamte schneller befördert werden als Pakete.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(