Spaltenbreite setzen
Stefan
- javascript
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
Moin!
Suchst Du document.write()?
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()?
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
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
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
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
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
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
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
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
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
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
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
Hi,
also trifft die Vermutung zu:
Wieso? Ne Zahl passt doch, die kann ich doch ausgeben, px dahinter und fertig.
Gruß,
Stefan
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
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:
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