Nicole: <img width="" Breite durch script

Hallo erst mal ;-)
Das nachfolgende Script
ändert die Breite des angezeigten Bildes.
Und das nur wenn die Breite >=500pixel ist.

Das Problem:
Falss dieses Bedingung einmal eintritt,
bleibt auch bei anderen Bildern die Breitenangabe bestehen,
des nachfolgenden Bildes unter 500 Pixel. Also:
Bild1: 100x100 =100x100
Bild2: 20x20=20x20
Bild3: 600x500=300x250  << Hier kommt if bedingung
Bild4: 100x100 =300x250
Bild5: 20x20 =300x250  << Hier stimmt der Wert dann nicht mehr

Wie kann ich das Script dazu bringen wieder neu zu prüfen ob die
Breite grösser als 500 ist, ansonsten normal anzeigen?

--------------
<FORM ENCTYPE="multipart/form-data" ACTION="" METHOD="POST">
<INPUT TYPE="file" SIZE="25" NAME="imgfile"onchange="document.pic.src=this.value;">
</FORM>

<img name="pic"src="" border="0" onload="if(this.width >500)this.width=(this.width/100)*50;"onmouseover="alert(this.width);">
------------

Also wo es mir drum geht ist die width variable wieder freizugeben,
damit das nächste Bild neu auf Breite analysiert wird.

Gruss Nikki

  1. <img name="pic"src="" border="0" onload="if(this.width >500)this.width=(this.width/100)*50;"onmouseover="alert(this.width);">

    Nur der IE ändert die Größe von Bildern nachträglich (daher auch dieser lästige Zappeleffekt beim laden von Seiten) und das funkltioniert auch ohne JS. Alle anderen Browser (soweit ich sie kenne) machen das gar nicht. Für diese musst du das Bild neu einfügen (dHTML).

    Struppi.

    1. Hallo Struppi,
      ?? Zappeleffekt ?

      Also mir reichts wenns im IE klappt,
      und da klappts ja auch wunderschön,
      solange ich nicht die IF bedingung nutze.

      Das heisst jedes Bild wird sonst in der jeweiligen Grösse
      sauber dargestellt.

      Meine Frage bezieht sich alleine auf den Ausgangszustand des
      scriptes.

      Danke Nikki

      1. Hallo Struppi,
        ?? Zappeleffekt ?

        Hast du noch nie gesehen, wenn aif einer Seite in <img> Tags keine Größenangabe gemacht wird, wird das ganze Dokument neu aufegbaut während dem laden und das zappelt dann alles total rum, daher kommt der wunsch vieler nach einem preloader, weil dieser effekt nicht schön aussieht.

        Meine Frage bezieht sich alleine auf den Ausgangszustand des
        scriptes.

        Dann versteh ich deine Frage nicht. Bei mir prüft das Skript immer die Breite und passt sie entsprechend an.

        Struppi.

        1. Hast du noch nie gesehen, wenn aif einer Seite in <img> Tags keine Größenangabe gemacht wird, wird das ganze Dokument neu aufegbaut während dem laden und das zappelt dann alles total rum, »»

          Hallo Struppi,
          Wie du bei diesem Script siehst handelt es sich ja um einen Teil
          eine Uploadformulares, das heisst die Bilder kommen von der eigenen Platte also kein Zappeln ;-)

          Dann versteh ich deine Frage nicht. Bei mir prüft das Skript immer die Breite und passt sie entsprechend an.

          Nein, nur so lange du kein Bild verwendest das breiter als 500 ist.
          Und das nachfolgende danach erhält dann den letzten Wert.

          Gruss Nikki

          1. Hast du noch nie gesehen, wenn aif einer Seite in <img> Tags keine Größenangabe gemacht wird, wird das ganze Dokument neu aufegbaut während dem laden und das zappelt dann alles total rum, »»

            Hallo Struppi,
            Wie du bei diesem Script siehst handelt es sich ja um einen Teil
            eine Uploadformulares, das heisst die Bilder kommen von der eigenen Platte also kein Zappeln ;-)

            Jaja, ich weiss, mein Aussage bezog sich nicht auf dein Skript. Sondern auf die Bemerkung, das nur der IE dazu in der Lage ist, aber das hat halt diesen Zappeleffekt zur bei bestimmten Aktionen zur Folge.

            Struppi.

        2. Meine Frage bezieht sich alleine auf den Ausgangszustand des
          scriptes.

          Dann versteh ich deine Frage nicht. Bei mir prüft das Skript immer die Breite und passt sie entsprechend an.

          Ahh, nach ein paar test, du hast recht, das ist wohl ein Bug, der auch hier in meinem IE 4.0 auftritt.

          Du musst das bild separat laden nachträglich dem Bild im Dokument zu weisen und dann die Größe ändern.

          In etwa so:

          /* Wird von dem Formular aufgerufen */
          function changePic(src)
          {
              var img = new Image();
              img.onload = change;
              img.src = src;
          }

          function change()
          {
             var img = document.pic;

          img.src = this.src;

          if(img.width > 100) img.width = (this.width/100)*50
             alert(this.width);
             document.forms[0].width.value = img.width;
             document.forms[0].height.value = img.height;
          }

          Struppi.

          1. Hallo Struppi
            und erst mal vielen Dank für deine Mühe.

            Leider klappts jetzt noch immer nicht.
            Deine Funktionen arbeiten normal,doch
            sobald auch hier die IF bedingung arbeitet,
            wird sogar jedes Bild danach um 50%reduziert.

            Gruss Nikki

            1. Hallo Struppi
              und erst mal vielen Dank für deine Mühe.

              Leider klappts jetzt noch immer nicht.
              Deine Funktionen arbeiten normal,doch
              sobald auch hier die IF bedingung arbeitet,
              wird sogar jedes Bild danach um 50%reduziert.

              füge die zwei Zeilen noch in change() ein:
                 img.width = this.width;
                 img.height = this.height;

              Struppi.

              1. füge die zwei Zeilen noch in change() ein:
                   img.width = this.width;
                   img.height = this.height;

                Super klappt, ich danke Dir Struppi ;-)
                Nikki