rafke: document.BildName.height

Moin!

ich will eine Funktion schreiben die die Höhe eines Bildes
verändert

function f_Bild(strBildname)
{
   document.strBildname.height = 120;
}

soweit so gut - mein Problem liegt nun in der Übergabe
des Bildnamens, denn so wie ich das da oben geschrieben
habe sucht der nach einem Bild mit dem Namen strBildname,
deswegen meine Frage - wie bringe ich ihn dazu an der Stelle
den Inhalt des Strings da auszuwerten ?

Gruß
rafke

  1. Hallo,

    ich will eine Funktion schreiben die die Höhe eines Bildes
    verändert

    function f_Bild(strBildname)
    {
       document.strBildname.height = 120;
    }

    soweit so gut - mein Problem liegt nun in der Übergabe
    des Bildnamens, denn so wie ich das da oben geschrieben
    habe sucht der nach einem Bild mit dem Namen strBildname,
    deswegen meine Frage - wie bringe ich ihn dazu an der Stelle
    den Inhalt des Strings da auszuwerten ?

    Die Schreibweise
       document.collectionName.Eigenschaft
    ist nur eine Abkürzung für
       document.Collection["collectionName"].Eigenschaft.

    In http://de.selfhtml.org/javascript/objekte/images.htm#allgemeines steht leider nur, dass man die Collection wie ein Array benutzen kann.
       document.Collection[0].Eigenschaft

    In Deinem Beispiel ist images die Collection. Du könntest also schreiben:
       document.images[strBildname].height = 120;

    Das Prinzip gilt aber auch für alle weiteren Collections wie:
    applets, links, forms, ancors, elements, options, areas, rows ... http://www.w3.org/TR/1998/WD-DOM-19980720/level-one-html.html

    viele Grüße

    Axel

    1. Hallo,

      ich will eine Funktion schreiben die die Höhe eines Bildes
      verändert

      function f_Bild(strBildname)
      {
         document.strBildname.height = 120;
      }

      soweit so gut - mein Problem liegt nun in der Übergabe
      des Bildnamens, denn so wie ich das da oben geschrieben
      habe sucht der nach einem Bild mit dem Namen strBildname,
      deswegen meine Frage - wie bringe ich ihn dazu an der Stelle
      den Inhalt des Strings da auszuwerten ?

      Die Schreibweise
         document.collectionName.Eigenschaft
      ist nur eine Abkürzung für
         document.Collection["collectionName"].Eigenschaft.

      In http://de.selfhtml.org/javascript/objekte/images.htm#allgemeines steht leider nur, dass man die Collection wie ein Array benutzen kann.
         document.Collection[0].Eigenschaft

      In Deinem Beispiel ist images die Collection. Du könntest also schreiben:
         document.images[strBildname].height = 120;

      Das Prinzip gilt aber auch für alle weiteren Collections wie:
      applets, links, forms, ancors, elements, options, areas, rows ... http://www.w3.org/TR/1998/WD-DOM-19980720/level-one-html.html

      viele Grüße

      Axel

      danke!! - so gings sofort

      rafke

  2. function f_Bild(strBildname)
    {
       document.strBildname.height = 120;
    }

    soweit so gut

    Nee, eigentlich nicht. Guck doch einfach in die API unter document.images, oder wie man generell auf Collections per Elementnamen zugreift. Alternativ geht's auch mit getElementById().

    1. Hallo,

      Guck doch einfach in die API unter document.images, oder wie man generell auf Collections per Elementnamen zugreift.

      Welches API?

      viele Grüße

      Axel

      1. Welches API?

        Möchtest Du gerne philosophieren?

        1. Hallo,

          Welches API?
          Möchtest Du gerne philosophieren?

          Meinetwegen. Worüber denn?

          Die Frage war ausführlich:
          Bereits häufiger habe ich hier als Reaktion auf JavaScript-Fragen den Verweis auf ein API gelesen. Ein Application Programmers Interface wird üblicherweise von den Entwicklern einer Programmierumgebung für Anwendungen zur Unterstützung der application programmer, also der Nutzer ihrer Programmierumgebung angeboten.

          Nachdem JavaScript ursprünglich von Netscape kam, wäre http://devedge.netscape.com/central/javascript/ wohl die richtige Anlaufstelle. Allerdings ist das core JavaScript1.4/1.5 bzw. JavaScript1.3 für Netscape 4.x und weit entfernt davon, eine Unterstützung für das clientseitige JavaScript-Programmieren für moderne Browser zu sein.

          Nun gut, lesen wir irgendwo, dass JavaScript als ECMA-Script weiterentwickelt wird, und kommen zu http://www.ecma-international.org/publications/standards/Ecma-262.htm. Naja, dort ist man natürlich Programmierer und sich zu fein für HTML-Dokumentationen, also wird die PDF-Doku geladen ...... umsonst, auch wieder nur core ohne Bezug zu HTML und DOM.

          Stichwort DOM, http://www.w3.org/DOM/ bringt uns über "Looking for the specifications? See ..." zu http://www.w3.org/DOM/DOMTR. Aha, doch schon seit 9. Januar 2003 gibt es eine W3C Recommendation zu HTML-DOM http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html.

          Gut, wir waren auf der Suche nach ... wonach? ... ach ja, wie man die images Collection anspricht. Hm, im Linkverzeichnis finden wir nur HTMLCollection allgemein und HTMLImageElement. Ach ja, die Collection war ja unterhalb von document angesiedelt. Bingo, im Interface HTMLDocument ist die Collection images definiert http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-90379117. Ja, nun ist alles klar. Wir müssen nur noch beim Interface HTMLCollection nachschlagen, wie man Collections allgemein anspricht.

          <img name="MeinBild" src="home.gif" width="200" height="64" border="0" alt="Bild">
          <script type="text/javascript">
          <!--
          alert (document.images.namedItem("MeinBild").width);
          //-->
          </script>

          Und wo steht nun, warum document.images["MeinBild"].width auch funktioniert?

          Deshalb die Frage: Wo gibt es ein JavaScript API?

          viele Grüße

          Axel

          1. Hallo,

            Nachdem JavaScript ursprünglich von Netscape kam, wäre http://devedge.netscape.com/central/javascript/ wohl die richtige Anlaufstelle. Allerdings ist das core JavaScript1.4/1.5 bzw. JavaScript1.3 für Netscape 4.x und weit entfernt davon, eine Unterstützung für das clientseitige JavaScript-Programmieren für moderne Browser zu sein.

            Was ist eine »Unterstützung für das clientseitige JavaScript-Programmieren für moderne Browser«? Auch in modernen Browsern können nach wie vor die Zugriffsmethoden dieser JavaScript-Standards verwendet werden, aus DOM-Sicht als DOM Level 0 bezeichnet. Und document.images.bildname wurde in JavaScript 1.1 beschrieben: http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ref_h-l.htm#90794. In JavaScript 1.3 taucht es wieder auf http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/document.html#1226315.

            Und wo steht nun, warum document.images["MeinBild"].width auch funktioniert?

            Nach DOM Core und HTML Level 1 und höher gibt es diese Möglichkeit freilich nicht. Dass es möglich ist, liegt am JavaScript-1.1-Erbe aus der Zeit vor dem W3C-DOM. Wenn man heute JavaScript schreibt, dann nutzt man unwissentlich ständig diese Methoden, die weder durch ECMAScript noch das DOM standardisiert sind.

            Mathias

            1. Hallo,

              Was ist eine »Unterstützung für das clientseitige JavaScript-Programmieren für moderne Browser«?

              Das wäre eine verbindliche Spezifikation, in der steht, was Browser an Script (JavaScript, ECMA) in Verbindung mit DOM unterstützen sollten bzw. müssten und welche Syntax hierfür gilt.

              Auch in modernen Browsern können nach wie vor die Zugriffsmethoden dieser JavaScript-Standards verwendet werden,

              Nein, eben nicht alle. Man muss ständig zwischen den Netscape JavaScript-Dokus und den W3C-DOM-Dokus wechseln, um herauszufinden, dass z.B. document.classes, document.tags und document.contextual _nicht_ mehr dem Standard entsprechen, nur um mal einige, außer dem bekannten document.layers, zu nennen.

              aus DOM-Sicht als DOM Level 0 bezeichnet.

              Wo wird DOM Level 0 verbindlich geregelt?

              Darum ging es aber auch gar nicht. Immer noch bin ich der Meinung, dass ein "Schau in die API" oder "RTFM" nur dann sinnvoll ist, wenn man das "fucking manual" auch irgendwo finden kann. Wenn man sich das API selbst aus fünf bis unendlich vielen Spezifikationen zusammenstoppeln muss, sollte man diese eben auch statt des RTFM verlinken.

              viele Grüße

              Axel

              1. Hallo,

                Was ist eine »Unterstützung für das clientseitige JavaScript-Programmieren für moderne Browser«?

                Das wäre eine verbindliche Spezifikation, in der steht, was Browser an Script (JavaScript, ECMA) in Verbindung mit DOM unterstützen sollten bzw. müssten und welche Syntax hierfür gilt.

                Die gibt es freilich nach wie vor nicht. Es gibt nicht einmal eine konsensuell erarbeitete Spezifikation, die »window« als Hostobjekt für die ECMAScript-Anwendung festlegt, die informal »JavaScript« genannt wird.

                Auch in modernen Browsern können nach wie vor die Zugriffsmethoden dieser JavaScript-Standards verwendet werden,

                Nein, eben nicht alle. Man muss ständig zwischen den Netscape JavaScript-Dokus und den W3C-DOM-Dokus wechseln, um herauszufinden, dass z.B. document.classes, document.tags und document.contextual _nicht_ mehr dem Standard entsprechen, nur um mal einige, außer dem bekannten document.layers, zu nennen.

                Die Schwierigkeit, die du siehst, habe ich so nicht erlebt. Der Grundstock von JavaScript 1.1 setzte sich durch und wird heutzutage breit unterstützt. Wenn man weiß, dass das JSSS-Konzept als Teil des DHTML-Konzepts von Netscape 4/JavaScript 1.2 kein Erfolgsmodell war, muss man nicht viel suchen. An dem Punkt greift Sekundärliteratur wie Selfhtml an, indem die Techniken der verschiedenen Spezifikationen aus einer Metaposition beschrieben werden.

                aus DOM-Sicht als DOM Level 0 bezeichnet.
                Wo wird DOM Level 0 verbindlich geregelt?

                Ähem? Ich sagte doch gerade, dass das gesamte nicht verbindlich geregelte Erbe aus der Vergangenheit Level 0 genannt wird.

                Darum ging es aber auch gar nicht. Immer noch bin ich der Meinung, dass ein "Schau in die API" oder "RTFM" nur dann sinnvoll ist, wenn man das "fucking manual" auch irgendwo finden kann. Wenn man sich das API selbst aus fünf bis unendlich vielen Spezifikationen zusammenstoppeln muss, sollte man diese eben auch statt des RTFM verlinken.

                Dem habe ich nicht widersprochen. Natürlich ist es unpassend, von einer »API« zu reden, im Vergleich zu einer ausnahmslos durchstandardisierten Sprache nur einzelne Bruchstücke normativ spezifiziert sind. Aber nichtsdestoweniger lässt sich gut mit den Dokumentationen von Netscape-JavaScript, Microsoft-JScript und W3C-DOM arbeiten. Das fucking manual ist in vielen Fällen Selfhtml, das einem genau diese Arbeit größtenteils abnimmt.

                Mathias