Tina: Breite eines Bildes auslesen

Hallo  zusammen,

wie kann ich für den IE6 die Breite eines Bildes per JavaScript auslesen?
Ich habe folgenden HTML Code:

<img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>

Per JavaScript habe ich bereits folgendes probiert:

var aWidth = document.n_img_4711_1.width
var aWidth = document.getElementById('img_4711_1').width

Leider liefern mir beide Alternativen den Wert "0" zurück.
Ich habe bei Generierung des HTML Codes leider keine Möglichkeit die Attribute "width" und "height" für das Bild zu füllen.

Danke im Voraus
Grüße

Tina

  1. Hallo  zusammen,

    wie kann ich für den IE6 die Breite eines Bildes per JavaScript auslesen?
    Ich habe folgenden HTML Code:

    <img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>

    name ist nicht erlaubt in <img>
    Verwende id.
    Ein leeres alt Attribut braucht besondere Gründe.

    Per JavaScript habe ich bereits folgendes probiert:

    var aWidth = document.n_img_4711_1.width

    du versuchst ein width Attribut auszulesen, das nicht existiert.

    var aWidth = document.getElementById('img_4711_1').width

    dazu muss dein Element ein id Attribut aufweisen. Aber ein width Attribut ist immer noch nicht vorhanden.

    Leider liefern mir beide Alternativen den Wert "0" zurück.
    Ich habe bei Generierung des HTML Codes leider keine Möglichkeit die Attribute "width" und "height" für das Bild zu füllen.

    Du möchtest nicht das width Attribut auslesen, sondern die Darstellungsgrösse ermitteln.
    Die Methoden heissen.
    clientWidth und clientHeight

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. @@Beat:

      nuqneH

      <img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>
      var aWidth = document.n_img_4711_1.width

      du versuchst ein width Attribut auszulesen, das nicht existiert.

      Nein. Er liest die width-Eigenschaft des Objektes document.n_img_4711_1 aus, das offensichtlich existiert. (Dennoch ist diese Variante wohl nicht empfehlenswert.)

      var aWidth = document.getElementById('img_4711_1').width
      dazu muss dein Element ein id Attribut aufweisen.

      Hat’s ja.

      Aber ein width Attribut ist immer noch nicht vorhanden.

      Dafür aber ein Deppenleerzeichen. ;-) Ansonsten siehe oben.

      Du möchtest nicht das width Attribut auslesen

      Stimmt. ;-)

      sondern die Darstellungsgrösse ermitteln.
      Die Methoden heissen.
      clientWidth und clientHeight

      Was das Problem nicht löst, da es woanders liegt.

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. im IE funktioniert bei mir seit langem:

        <div id="prediv" style="visibility:hidden;">
        <img id="prebild" src="">
        </div>

        <script>
        prebild.src = "img/exampleImage01.jpg";
        ...

        if (document.images.prebild.complete == true) {
          window.status = 'Bild geladen (' + document.images.prebild.complete+')';
          h1 = document.images.prebild.clientHeight;
          b1 = document.images.prebild.clientWidth;
        }
        ..
        </script>

        Die Abfrage muss evtl. mehrfach erfolgen, wenn das Bild nnoch nicht geladen ist. Wenn es das Bild nicht gibt, wird complete nie true !!!

        @@Beat:

        nuqneH

        <img id="img_4711_1" name="n_img_4711_1" src="img/exampleImage01.jpg" alt=""/>
        var aWidth = document.n_img_4711_1.width

        du versuchst ein width Attribut auszulesen, das nicht existiert.

        Nein. Er liest die width-Eigenschaft des Objektes document.n_img_4711_1 aus, das offensichtlich existiert. (Dennoch ist diese Variante wohl nicht empfehlenswert.)

        var aWidth = document.getElementById('img_4711_1').width
        dazu muss dein Element ein id Attribut aufweisen.

        Hat’s ja.

        Aber ein width Attribut ist immer noch nicht vorhanden.

        Dafür aber ein Deppenleerzeichen. ;-) Ansonsten siehe oben.

        Du möchtest nicht das width Attribut auslesen

        Stimmt. ;-)

        sondern die Darstellungsgrösse ermitteln.
        Die Methoden heissen.
        clientWidth und clientHeight

        Was das Problem nicht löst, da es woanders liegt.

        Qapla'

        1. @@Wilfried:

          nuqneH

          Die Abfrage muss evtl. mehrfach erfolgen

          Aua. Dafür gibt es http://de.selfhtml.org/javascript/sprache/eventhandler.htm@title=Eventhandler.

          Qapla'

          PS: Bitte kein TOFU!

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    2. name ist nicht erlaubt in <img>

      Das ist falsch http://www.w3.org/TR/html401/struct/objects.html#h-13.2

      var aWidth = document.n_img_4711_1.width

      du versuchst ein width Attribut auszulesen, das nicht existiert.

      Auch das ist falsch s.o.

      Struppi.

      1. name ist nicht erlaubt in <img>
        Das ist falsch http://www.w3.org/TR/html401/struct/objects.html#h-13.2

        lapsus Meinerseits.

        var aWidth = document.n_img_4711_1.width

        du versuchst ein width Attribut auszulesen, das nicht existiert.

        Auch das ist falsch s.o.

        OK, width ist "implied", also sowieso vorhanden.

        Aber wie siehts damit aus?

        <p name=""></p>
        <p></p>

        <script type="text/javascript">
        var c = document.getElementsByName('');
        alert(c.length ); // gibt 1 aus.
        </script>

        implied hilft mir also hier nicht weiter, und damit nützt es nichts zu sagen, dass length existiere. Es ecistiert in einem ungreifbaren implizierten Nirvana.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Aber wie siehts damit aus?

          <p name=""></p>

          p hat kein Name Attribut, aber darum ging es ja nicht.

          <p></p>

          <script type="text/javascript">
          var c = document.getElementsByName('');
          alert(c.length ); // gibt 1 aus.
          </script>

          Nur im Fx, nicht im IE  - das ist ein Bug im Fx.

          Struppi.

  2. @@Tina:

    nuqneH

    Leider liefern mir beide Alternativen den Wert "0" zurück.

    Ja.

    Dein JavaScript wird ausgeführt, bevor das Bild geladen ist. Deshalb bekommst du per 'width' die Breite des (leeren) Alternativtextes.

    Sorge dafür, dass das Script erst nach dem Laden des Bildes ausgeführt wird: 'window.onload'.

    Qapla'

    --
    Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
    1. Hallo Gunnar,
      Danke für Deine Antwort.

      Sorge dafür, dass das Script erst nach dem Laden des Bildes ausgeführt wird: 'window.onload'.

      die Funktion wird über ein onClick aufgerufen. Zu diesem Zeitpunkt ist das Dokument bereits geladen.

      Tina

      1. @@Tina:

        nuqneH

        die Funktion wird über ein onClick aufgerufen. Zu diesem Zeitpunkt ist das Dokument bereits geladen.

        Link zu deiner Seite?

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
        1. Link zu deiner Seite?

          Gibt es leider nicht. Bin gerade dabei diese zu erstellen.
          Die Seite ist valide und im FF funktioniert es auch. Nur dieser Pseudo-Brwoser IE6 kanns mal wieder nicht.
          Tina

      2. Sorge dafür, dass das Script erst nach dem Laden des Bildes ausgeführt wird: 'window.onload'.

        die Funktion wird über ein onClick aufgerufen. Zu diesem Zeitpunkt ist das Dokument bereits geladen.

        Das kann nicht sein oder du machst etwas falsch.

        Struppi.