Ina: Warum set_attribute?

Hallo, hier
http://de.selfhtml.org/javascript/objekte/all.htm#set_attribute
wird die Verwendung von set_attribute gezeigt.

Ich frage mich wozu das eigentlich notwenig ist, denn wenn ich den Code mal ändere:

function Test () {
// Anstatt:
// document.all.Absatz.setAttribute("align", "center", "false");
// so:
document.all.Absatz.align='right';
}
oder noch besser so:
document.getElementById('Absatz').align='right';

Also ich meine damit, warum extra setAttribute, wenn align/anderes Attribut auch reichen würde. Dann wird das Attribut doch auch erzeugt wenn nicht vorhanden.

Hat setAttribute aus einem speziellen Grund, trotzdem seiner Berechtigung und gibt es Beispiele wo man setAttribute den Vorzug vor meiner Variante geben sollte?

Ina

  1. Wenn du die Eigenschaft, die du ändern möchtest, beispielsweise dynamisch festlegen möchtest kannst du dies nur Über set_attribute.

    Also falls du vorher nicht weißt, welches Attribut geändert wird, ob jetzt beispielsweise 'align' oder 'valign'.

    1. Wenn du die Eigenschaft, die du ändern möchtest, beispielsweise dynamisch festlegen möchtest kannst du dies nur Über set_attribute.

      Also falls du vorher nicht weißt, welches Attribut geändert wird, ob jetzt beispielsweise 'align' oder 'valign'.

      Hi,
      Versteh ich nicht.

      Ina

      1. Ich hab noch ein Beispiel hinzugefügt.

    2. Wenn du die Eigenschaft, die du ändern möchtest, beispielsweise dynamisch festlegen möchtest kannst du dies nur Über set_attribute.

      Also falls du vorher nicht weißt, welches Attribut geändert wird, ob jetzt beispielsweise 'align' oder 'valign'.

      Ein Beispiel dazu:

      var att = "align";
      var val = "center";

      document.getElementById('absatz1').set_attribute(att, val, false);

      so würde es dann nicht funktionieren:

      document.getElementById('absatz1').att = val;

      Da der Attributname in einer Variablen gespeichert ist.
      Eine andere sinnvolle Anwenung fällt mir auch nicht dazu ein.

      1. Ein Beispiel dazu:

        var att = "align";
        var val = "center";

        document.getElementById('absatz1').set_attribute(att, val, false);

        »»

        also ausgeführt als:
        document.getElementById('absatz1').set_attribute('align', 'center', false);

        Das kann doch nicht sein, was du da meinst?

        so würde es dann nicht funktionieren:

        document.getElementById('absatz1').att = val;

        Natürlich genausowenig.

        Da der Attributname in einer Variablen gespeichert ist.
        Eine andere sinnvolle Anwenung fällt mir auch nicht dazu ein.

        Ok, danke
        Ina

        1. Ein Beispiel dazu:

          var att = "align";
          var val = "center";

          document.getElementById('absatz1').set_attribute(att, val, false);
          »»

          also ausgeführt als:
          document.getElementById('absatz1').set_attribute('align', 'center', false);

          Das kann doch nicht sein, was du da meinst?

          Warum nicht? Das sollte funktionieren, habs zwar nicht getestet, aber...

          so würde es dann nicht funktionieren:

          document.getElementById('absatz1').att = val;

          Natürlich genausowenig.

          Das kann nicht funktionieren, da att keine Eigenschaft von absatz1 ist, sondern nur ausschließlich der Wert von att.

          1. var att = "align";
            var val = "center";

            Das kann nicht funktionieren, da att keine Eigenschaft von absatz1 ist, sondern nur ausschließlich der Wert von att.

            »»

            Ahh, Groschen gefallen, danke
            Ina

      2. [latex]Mae  govannen![/latex]

        var att = "align";
        var val = "center";

        so würde es dann nicht funktionieren:

        document.getElementById('absatz1').att = val;

        Bin gerade zu faul zum testen...
        document.getElementById('absatz1')[att] = val;

        Cü,

        Kai

        --
        When the limos return for their final review, it's all thru'
        - all they can see is the morning goo.
        "There's no-one left alive - must be draw."
        So the Blackcap Barons toss a coin to settle the score.
        ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|]
        1. [latex]Mae  govannen![/latex]

          var att = "align";
          var val = "center";

          so würde es dann nicht funktionieren:

          document.getElementById('absatz1').att = val;

          Bin gerade zu faul zum testen...
          document.getElementById('absatz1')[att] = val;

          Für dich getestet - funktioniert auch. Dann erscheint mir set_attribute wirklich sinnlos...

          1. Hi,

            Dann erscheint mir set_attribute wirklich sinnlos...

            sprich bitte von setAttribute, ein set_attribute gibt es nicht.

            obj.setAttribute('foo') setzt ein HTML-Attribut in einem HTML-Element. obj.foo setzt eine Objekt-Eigenschaft in einem JavaScript-Objekt. Bei _vielen_ HTML-Attributen findet ein mehr oder minder direktes Mapping zwischen korrelierenden Werten statt - jedoch längst nicht bei allen, und auch nicht zwingend 1:1. Die href-Eigenschaft kann sich beispielsweise wunderbar vom href-Attribut unterscheiden[1]. Und spätestens wenn Du über HTML hinaus denkst und zu XML gelangst, ist mit dem Mapping Schluss.

            Übrigens kann auch ein ALIGN-Attribut existieren, während es keine ALIGN-Eigenschaft gibt, dafür jedoch eine align-Eigenschaft.

            Cheatah

            [1] Außer beim IE, der ist zu doof für sowas.

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    Also ich meine damit, warum extra setAttribute, wenn align/anderes Attribut auch reichen würde.

    setAttribute stammt aus dem sogenannten Kern-DOM. Das ist von HTML unabhängig und definiert den objektbasierten Zugriff auf alle möglichen XML-artigen Dokumente. Im HTML-spezifischen DOM ist dann noch einmal geregelt, dass man neben getAttribute auch über direkte Eigenschaften auf die Attribute zugreifen kann. Diese Eigenschaften sind hier Element für Element aufgelistet: http://de.selfhtml.org/javascript/objekte/htmlelemente.htm

    Als Faustregel kann man die direkte, kürzere Schreibweise verwenden, in deinem Beispiel macht es keinen Unterschied. Man muss bei manchen Elementen allerdings auf die Schreibweise achten. Anders herum macht setAttribute einige Probleme im IE, da muss man wieder auf die Schreibweise achten. Der Themenkomplex ist unter http://de.selfhtml.org/javascript/objekte/node.htm#set_attribute beschrieben.

    Mathias

  3. @@Ina:

    // so:
    document.all.Absatz.align='right';
    }
    oder noch besser so:
    document.getElementById('Absatz').align='right';

    oder noch besser so:
    document.getElementById('Absatz').style.textAlign = 'right';

    Live long and prosper,
    Gunnar

    --
    Flughafen in Tempelhof
    findet jeder Hempel doof.