Günter Marchewka: Dynamisch Attribute ändern <TD> Höhe und Breite

Hallo Ihr,

wie kann ich es erreichen, das Definitionen wie im folgenden style-Abschnitt dynamisch geändert werden können?

<STYLE TYPE="TEXT/CSS">
<!--
  TD  { width:30px; height:30px; background-color:#0000ff; }
  IMG { width:30px; height:30px; }
//-->
</STYLE>
Dieser style-Abschnitt funktioniert prima. Aber:
Im IE5.0 (Genau 5.00.3103.1000) funktionieren beide folgenden Anweisungen (button-Tags) nicht.
Die erste erzeugt die Meldung "style ist kein objekt", die zweite "0.style ist kein objekt".

(Gross- und kleinschreibung der Tagnamen ändert das Ergebnis nicht.)
Der IE behauptet jedoch, das er "getElementsByTagName" kennt. Eine entsprechende if-Abfrage wird mit true beantwortet.

Mach ich einen Fehler? Wenn Ja, welchen?

<button onClick="getElementsByTagName('td').style.width='40px';">Größer</button>

<button onClick="getElementsByTagName('td')[0].style.width='40px';">Größer</button>

Oder kennt jemand eine bessere/funktionierende Methode?
Gruß
Günter

  1. Hallo,

    Der IE behauptet jedoch, das er "getElementsByTagName" kennt. Eine entsprechende if-Abfrage wird mit true beantwortet.

    Mach ich einen Fehler? Wenn Ja, welchen?

    document.getElementsByTagName('td')[0].style.width='40px'

    MfG, Thomas

    1. Liebes Forum,

      Herzlichen Glückwunsch zum 100 000. Posting.

      --
      Henryk Plötz
      Grüße aus Berlin

      1. Herzlichen Glückwunsch zum 100 000. Posting.

        ...

        und keiner sieht's ?!

        Harry

    2. Hallo Thomas,

      Der IE behauptet jedoch, das er "getElementsByTagName" kennt. Eine entsprechende if-Abfrage wird mit true beantwortet.

      Mach ich einen Fehler? Wenn Ja, welchen?

      document.getElementsByTagName('td')[0].style.width='40px'

      Ja, habe ich nicht angegeben, liegt die Vermutung also nahe, aber
      das ist dem IE5.0 völlig egal! Ob mit oder ohne "document" davor verändert das Ergebnis leider nicht.
      Es ist also noch etwas anderes, oder diese Version kann es einfach nicht.

      Soweit erst mal Danke, und auch von mir einen herzlichen Glückwunsch an das Forum!
      Gruß
      Günter

      1. Hallo,

        Ja, habe ich nicht angegeben, liegt die Vermutung also nahe, aber
        das ist dem IE5.0 völlig egal! Ob mit oder ohne "document" davor verändert das Ergebnis leider nicht.
        Es ist also noch etwas anderes, oder diese Version kann es einfach nicht.

        Schau mal bitte hier nach http://www.styleassistant.de/tips/w3cdom.htm, ob unter "Absatz 3 neue Farben zuweisen" etwas passiert. Dabei wird getElementsByTagName("p")[2] angesprochen. Mit IE 5.01 hat das alles geklappt. Einen 5.00er habe ich nicht mehr verfuegbar.

        MfG, Thomas

        1. Hallo Thomas,

          oder diese Version kann es einfach nicht.

          Schau mal bitte hier nach http://www.styleassistant.de/tips/w3cdom.htm, ob unter "Absatz 3 neue Farben zuweisen" etwas passiert. Dabei wird getElementsByTagName("p")[2] angesprochen. Mit IE 5.01 hat das alles geklappt. Einen 5.00er habe ich nicht mehr verfuegbar.

          Danke für Deine Bemühungen. Konnte es noch nicht ausprobieren, da ich jetzt den IE5.00 nicht im Zugriff habe (bin an einem anderen Arbeitsplatz), will es aber mit wenig Hoffnung morgen testen.

          Mit dem IE5.5 und anderen, modernen Browsern klappt Dein Beispiel und meins auch(aber das hast Du Dir auch gedacht).
          Bei dem 5.00 denke ich lass ich es dann einfach sein.
          Leider bekomme ich es aber mit keinem Browser (auch Mozilla) hin, alle Elemente einer Sorte von HTML-Tags mit einer Anweisung zu ändern, also die Schreibweise
          document.getElementsByTagName('TD').style.blabla = 'xyz';
          Da liefern alle Fehlermeldungen.
          Gibt es eine Schreibweise, bei der ich das "[0]" in documents.getElementsByTagName('TD')[0].style.blabla='xyz'; ohne eine Schleife zu programmieren so ersetzen kann, das alle HTML-Tags der angesprochenen Sorte auf einen Schlag mit neuen Eigenschaften versorgt werden? Ich stelle mir dabei vor, quasi die generelle CSS-Definition aus meinem Ausgangsposting zu aktualisieren.
          Vielleicht muss ich ja auch etwas ganz anderes als getElementsByTagName dafür nehmen.
          Gruß
          Günter

          1. Hallo,

            Leider bekomme ich es aber mit keinem Browser (auch Mozilla) hin, alle Elemente einer Sorte von HTML-Tags mit einer Anweisung zu ändern, also die Schreibweise
            document.getElementsByTagName('TD').style.blabla = 'xyz';
            Da liefern alle Fehlermeldungen.

            getElementsByTagName("element") liefert ein Objektarray.

            Gibt es eine Schreibweise, bei der ich das "[0]" in documents.getElementsByTagName('TD')[0].style.blabla='xyz'; ohne eine Schleife zu programmieren so ersetzen kann, das alle HTML-Tags der angesprochenen Sorte auf einen Schlag mit neuen Eigenschaften versorgt werden?

            Da wuesste ich nichts, außer eben dieser Schleife:
            var tds=document.getElementsByTagName("td");for(i=0;i<tds.length;i++)tds[i].style.color="#00C";

            MfG, Thomas

            1. Hallo Thomas,

              Da wuesste ich nichts, außer eben dieser Schleife:
              var tds=document.getElementsByTagName("td");for(i=0;i<tds.length;i++)tds[i].style.color="#00C";

              Leider komme ich erst jetzt dazu, die versprochene Antwort zu geben.
              Zunächst aber: Danke für Dein Interesse! In der Form werde ich es dann wohl auch lösen.
              Übrigens kann ich jetzt bestätigen, das ein IE 5.00 ein document.getElementsByTagName sehr gut beherrscht. Der Browser war etwas gestört, aber nach einer Reparatur benimmt er sich wieder wie ein braver Browser.

              Viele Grüße
              Günter