Stefan: Spaltenbreite setzen

Hallo,

ich habe eine vielleicht ungewöhnliche Frage, aber ich bekomme es einfach nicht hin.
Ich habe eine Javascript-Funktion, welche mir nach bestimmten Regeln die gewünschte Breite berechnet.
Das funktioniert auch, per alert kann ich die Breite ausgeben.
So, jetzt würde ich gerne sagen:

<td width="javascript:setWidth()">

und dann wird die Seite so aufgebaut wie wenn ich

<td width="300px">

dort stehen hätte.
Wie mache ich das, dass mir hier statt dem fixen Wert die Variable ausgegeben wird?

Danke & Gruß
Stefan

  1. Moin!
    Suchst Du document.write()?

    --
    Signaturen sind blöd!
    1. Gut möglich. :)
      Also ich weiß, dass ich damit Ausgaben machen kann, aber diese Zeile:

      <td style="height: 55px;" width="<script type='text/javascript'>document.write(Fensterrestweite());</script>" class="headerrechts" valign="bottom">

      verhält sich, als wäre kein JavaScript vorhanden.

      Moin!
      Suchst Du document.write()?

      1. Hi,

        <td style="height: 55px;" width="<script type='text/javascript'>document.write(Fensterrestweite());</script>" class="headerrechts" valign="bottom">

        verhält sich, als wäre kein JavaScript vorhanden.

        ist ja auch keins da.
        Innerhalb von tags können keine tags vorkommen (auch nicht innerhalb von Attributwerten).

        Du könntest das gesamte tag per document.write erzeugen.
        Oder aber ganz auf Layouttabellen verzichten. *)

        *) class="headerrechts" ist ein deutlicher Hinweis darauf ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Hi,

          ok, klar, da hast du recht.
          So funktionierts: <script type='text/javascript'>document.write("<td style='height: 55px;' width='" + Fensterrestweite() + "' class='headerrechts' valign='bottom'>");</script>

          Jetzt wärs aber toll, wenn das bei jedem resize gemacht wird. Geht das? :)

          Danke!
          Stefan

          P. S. Was schlägst du denn bzgl. Layout vor?

          Hi,

          <td style="height: 55px;" width="<script type='text/javascript'>document.write(Fensterrestweite());</script>" class="headerrechts" valign="bottom">

          verhält sich, als wäre kein JavaScript vorhanden.

          ist ja auch keins da.
          Innerhalb von tags können keine tags vorkommen (auch nicht innerhalb von Attributwerten).

          Du könntest das gesamte tag per document.write erzeugen.
          Oder aber ganz auf Layouttabellen verzichten. *)

          *) class="headerrechts" ist ein deutlicher Hinweis darauf ...

          cu,
          Andreas

          1. Hi,

            P. S. Was schlägst du denn bzgl. Layout vor?

            <http://de.selfhtml.org/css/layouts/index.htm@title=Semantisches Markup + CSS.>

            Hat es einen Grund warum du immer alles zitierst und nicht nur das worauf du dich beziehst?

            ~dave

            1. Hi,

              <http://de.selfhtml.org/css/layouts/index.htm@title=Semantisches Markup + CSS.>

              Ist das nicht CSS, wie ichs auch verwende?

              Hat es einen Grund warum du immer alles zitierst und nicht nur das worauf du dich beziehst?

              Ich weiß halt nicht, was ihr so hören wollt, wie lange etwas für jemandne wichtig ist und wie lang nicht.
              Lasst mich doch erst mal ein bisschen reinkommen...

              Gruß,
              Stefan

              1. Hi,

                <http://de.selfhtml.org/css/layouts/index.htm@title=Semantisches Markup + CSS.>

                Ist das nicht CSS, wie ichs auch verwende?

                CSS setzt auf dem HTML auf, und regelt die Darstellung.
                HTML soll die Struktur der Daten möglichst sinnvoll auszeichnen.

                Wenn du also im HTML eine Tabelle verwendest, obwohl keine tabellarischen Daten vorliegen - nein, dann ist das kein „Semantisches Markup + CSS“.

                Lasst mich doch erst mal ein bisschen reinkommen...

                Erwarte bitte keine weitere Reaktion meinerseits auf Beiträge wie auch diesen hier, wenn du die Bitte nach sinnvollen Zitieren einfach ignorierst.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                1. Hi,

                  also versteh mich nicht falsch, sowas passiert in der Eile. Manche Leute haben noch andere Sachen zu tun als sich zu überlegen, ob da die eine Zeile mehr oder weniger rein muss.
                  Wenn ihr soviel Aufwand verwenden würdet, den Leuten zu helfen, wie ihr an neuen Leuten Fehler sucht, dann wäre dem Forum echt geholfen.

                  Naja, tut was ihr wollt, ich bin weg.

                  Stefan

  2. Hi,

    <td width="javascript:setWidth()">

    Wie mache ich das, dass mir hier statt dem fixen Wert die Variable ausgegeben wird?

    So - gar nicht.

    Die Funktion setWidth sollte sie die Referenz auf die Tabellenzelle besorgen, und dann über style.width den berechneten Wert setzen.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,

      ungefähr so:

      function setWidth(td\_id)  
      

      {
      obj = document.getElementByID(td_id)
      obj.style.width = Fensterrestweite();

      return obj.style.width;
       }

      Ändert sich leider gar nichts...

      Gruß,
      Stefan

      Hi,

      <td width="javascript:setWidth()">

      Wie mache ich das, dass mir hier statt dem fixen Wert die Variable ausgegeben wird?

      So - gar nicht.

      Die Funktion setWidth sollte sie die Referenz auf die Tabellenzelle besorgen, und dann über style.width den berechneten Wert setzen.

      MfG ChrisB

      1. Hi,

        bitte zitiere sinnvoll - das, worauf du dich konkret beziehst, und nicht gedankenlos einfach alles, danke.

        ungefähr so:

        function setWidth(td_id)
        {
        obj = document.getElementByID(td_id)
        obj.style.width = Fensterrestweite();

        return obj.style.width;
        }

        Ändert sich leider gar nichts...

        Das ist keine vernünftige Problembeschreibung.
        Bitte lese, und berücksichtige in Zukunft, die Tipps für Fragende.

        Vermutlich liefert der Aufruf von Fensterrestweite() keinen Wert zurück, der eine korrekte Angabe für die CSS-Eigenschaft width darstellen würde.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo,

          ok.
          Fensterrestweite liefert einen korrekten Integerwert zurück, td_id beinhaltet die ID des TD-Tags und Ergebnis ist, dass die Seite genau so aussieht, wie wenn ich diese Funktion nicht aufrufe.

          Das ganze wird unter dem Internet Explorer getestet, es handelt sich um eine interne Seite.

          Gruß,
          Stefan

          Hi,

          bitte zitiere sinnvoll - das, worauf du dich konkret beziehst, und nicht gedankenlos einfach alles, danke.

          ungefähr so:

          function setWidth(td\_id)  
          

          {
          obj = document.getElementByID(td_id)
          obj.style.width = Fensterrestweite();

          return obj.style.width;
          }

          Ändert sich leider gar nichts...

          Das ist keine vernünftige Problembeschreibung.
          Bitte lese, und berücksichtige in Zukunft, die Tipps für Fragende.

          Vermutlich liefert der Aufruf von Fensterrestweite() keinen Wert zurück, der eine korrekte Angabe für die CSS-Eigenschaft width darstellen würde.

          MfG ChrisB

          1. Hi,

            Fensterrestweite liefert einen korrekten Integerwert zurück,

            also trifft die Vermutung zu:

            Vermutlich liefert der Aufruf von Fensterrestweite() keinen Wert zurück, der eine korrekte Angabe für die CSS-Eigenschaft width darstellen würde.

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
            1. Hi,

              also trifft die Vermutung zu:

              Wieso? Ne Zahl passt doch, die kann ich doch ausgeben, px dahinter und fertig.

              Gruß,
              Stefan

              1. Hi,

                also trifft die Vermutung zu:

                Wieso? Ne Zahl passt doch, die kann ich doch ausgeben, px dahinter und fertig.

                Und wo genau ist bei

                obj.style.width = Fensterrestweite();

                das px?

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                O o ostern ...
                Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  3. Hallo,

    So, jetzt würde ich gerne sagen:

    <td width="javascript:setWidth()">

    Du kannst auf diese Weise kein JavaScript ausführen. Führe die Funktion beim load- oder DOMContentLoaded-Ereignis aus, siehe http://molily.de/js/event-handling-grundlagen.html und http://molily.de/js/event-handling-onload.html. In der Funktion kannst du dann von außen auf das Element zugreifen und seine Breite setzen. Beispiel:

    http://jsfiddle.net/2sr3X/

    Da setze ich einfach mal eine zufällige Breite. setWidth wird bei den Ereignissen load und resize ausgeführt.

    Allgemein kann man viele Anpassungen heutzutage auch mit CSS ohne JavaScript umsetzen, z.B. mit Prozentwerten, mit CSS Media Queries oder einem Flex-Box-Layout.

    Mathias