Klaus: Fehler bei IMG src...

Hallo zusammen,

heute scheine ich komplett auf dem Schlauch zu stehen...

Von einem script bekomme ich den Namen "imgname" eines Bildes als String übergeben, und soll damit die Bildquelle auslesen.

z.B. so

imgname="bild1.gif";

myimg=window.document.getElementsByName(imgname);

Sowohl bei

alert(myimg.src);

als auch bei

alert(myimg.getAttribute("src"));

bekomme ich aber den Fehler, dass das Objekt die Methode nicht unterstützt.

Was mache ich falsch?

Vielen Dank

Klaus

  1. Hallo Klaus.

    Von einem script bekomme ich den Namen "imgname" eines Bildes als String übergeben, und soll damit die Bildquelle auslesen.

    z.B. so

    imgname="bild1.gif";

    Warum bekommst du den Namen der als Grafik referenzierten Ressource?
    Dieser ist praktisch nutzlos.

    myimg=window.document.getElementsByName(imgname);

    Sowohl bei

    alert(myimg.src);

    als auch bei

    alert(myimg.getAttribute("src"));

    bekomme ich aber den Fehler, dass das Objekt die Methode nicht unterstützt.

    Natürlich. Warum sollte eine Zeichenkette (!) auch ein src-Attribut haben?

    Wenn du auf dieses zugreifen willst, musst du eine Referenz zum betroffenen Objekt (der Grafik) übergeben.

    Dies kann über http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=this und getElement* erfolgen. In diesem speziellen Fall bietet sich sogar ggf. die http://de.selfhtml.org/javascript/objekte/images.htm@title=document.images-Kollektion an.

    Einen schönen Montag noch.

    Gruß, Ashura

    1. Hallo Ashura,

      Natürlich. Warum sollte eine Zeichenkette (!) auch ein src-Attribut haben?

      Wenn du auf dieses zugreifen willst, musst du eine Referenz zum betroffenen Objekt (der Grafik) übergeben.

      Aber diese Referenz schaffe ich doch mit

      myimg=window.document.getElementsByName(imgname);

      oder nicht? Also müßte ich doch dann auch eine src Eigenschaft abrufen können.

      Dank & gruss

      Klaus

      1. hi,

        Aber diese Referenz schaffe ich doch mit
        myimg=window.document.getElementsByName(imgname);
        oder nicht?

        Nein - damit besorgst du dir die Collection, die _alle_ Elemente mit diesem name-Attribut enthält.

        Also müßte ich doch dann auch eine src Eigenschaft abrufen können.

        Du musst erst mal auswählen, welches der (potentiell) mehreren Elemente du meinst - dann kannst du vielleicht auf _dessen_ src-Eigenschaft zugreifen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo Klaus.

        Aber diese Referenz schaffe ich doch mit

        myimg=window.document.getElementsByName(imgname);

        oder nicht?

        Würdest du dies tun, könntest du das src-Attribut abfragen. Hast du dir verinnerlicht, was http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName wirklich bewirkt?

        Was du tatsächlich tust:

        Du versuchst, die Variable „myimg“ mit einem Array zu befüllen, welcher alle Elemente des aktuellen Dokumentes enhalten soll, deren http://de.selfhtml.org/html/referenz/attribute.htm#id_idref_name@title=name-Attribut den Wert „bild1.gif“ hat.

        Lies bitte die von mir verlinkten Teile der SELFHTML-Dokumentation.

        Einen schönen Montag noch.

        Gruß, Ashura

      3. Hi,

        Aber diese Referenz schaffe ich doch mit

        myimg=window.document.getElementsByName(imgname);

        oder nicht?

        nein. Dies ist mehrfach fehlerhaft:
        1. die Variablendeklaration (var myimg) fehlt.
        2. getElementsByName ist nicht ohne Grund im Plural. Es fehlt die Nummer des Elements.
        3. imgname hast Du zuvor (ebenfalls ohne Variablendeklaration) "bild1.gif" zugewiesen. Dies ist eine Zeichenkette - nichts weiter. Möglicherweise ist das auch der Dateiname deines Bildes, aber auch das ist für das Script ohne Belang.

        freundliche Grüße
        Ingo

      4. Hallo Klaus,

        Wenn du auf dieses zugreifen willst, musst du eine Referenz zum betroffenen Objekt (der Grafik) übergeben.

        Aber diese Referenz schaffe ich doch mit
        myimg=window.document.getElementsByName(imgname);

        nein, keine Spur. Damit versuchst du nur, im aktuellen Dokument ein Element mit dem Namen zu finden, der in imgname übergeben wurde. Du hast gleich zwei Denkfehler drin.

        1. Der Name des Elements im Dokument und der Name der Ressource (oder auch Datei) sind zwei verschiedene Paar Stiefel.
        2. Du hantierst immer nur mit dem Namen der externen Ressource. Dadurch existiert aber noch lange kein Image-Objekt.

        Also müßte ich doch dann auch eine src Eigenschaft abrufen können.

        Nein. Du müsstest aus dem Ressourcennamen erst einmal ein Image-Objekt erzeugen. Wenn du das dann hast, kannst du über seine src-Eigenschaft auch wieder auf den Ressourcennamen zugreifen. Aber wozu? Du drehst dich doch im Kreis. Die src-Eigenschaft enthält doch dann im Prinzip wieder den String, den du schon hast.
        Vielleicht gibst du uns mal etwas mehr von deinem Kontext? Ein Online-Beispiel wäre optimal, da wäre ja dann alles nötige dabei.

        So long,

        Martin

        --
        Es sagte...
        ein korpulenter Lehrer zu einem Schüler, der ihn ein Fass genannt hatte: "Nein. Ein Fass ist von Reifen umgeben, ich dagegen von Unreifen."
  2. Hi,

    myimg=window.document.getElementsByName(imgname);
    alert(myimg.src);

    wie viele Röme^WElemente?

    Cheatah

    --
    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
    1. Moin Cheatah!

      wie viele Röme^WElemente?

      ^
                       |
      Ist da ----------+ dein Browser Amok gelaufen?

      Schönen Abend noch,
      Robert

      1. Hallo Robert,

        wie viele Röme^WElemente?
                         ^
        Ist da ----------+ dein Browser Amok gelaufen?

        nö, wieso? Kennst du nicht die Tastenkürzel aus der guten alten Zeit?
         ^W - Wort links vom Cursor löschen
         ^H - Zeichen links vom Cursor löschen (Backspace)
         ^Y - aktuelle Zeile löschen
        und viele mehr.

        Was ich dagegen nicht verstehe, ist die Andeutung mit den Römern. Hmm...
        Ciao,

        Martin

        --
        Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
        Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.
        1. Hi,

          Was ich dagegen nicht verstehe, ist die Andeutung mit den Römern. Hmm...

          [x] Du möchtest diesbezüglich "Das Leben des Brian" konsultieren.

          Cheatah ;-)

          --
          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
          1. n'Abend,

            Was ich dagegen nicht verstehe, ist die Andeutung mit den Römern. Hmm...
            [x] Du möchtest diesbezüglich "Das Leben des Brian" konsultieren.

            ah, danke für den Denkanstoß! Den Film hab ich leider schon Ewigkeiten nicht mehr gesehen, muss ihn bei Gelegenheit mal wieder rauskramen.
            Ich hatte jetzt mein Hirn eher in Richtung Asterix bemüht und Weißvonnix. ;-)

            Ciao,

            Martin

            --
            Schon gewusst, dass Aftershave trotz des Namens eigentlich eher fürs Gesicht gedacht ist?
            1. Hi,

              Ich hatte jetzt mein Hirn eher in Richtung Asterix bemüht und Weißvonnix. ;-)

              Dasmachtdochnix ;-)

              Chea "Undwegwienix" tah

              --
              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. Moin Martin!

          wie viele Röme^WElemente?
                           ^
          Ist da ----------+ dein Browser Amok gelaufen?

          nö, wieso? Kennst du nicht die Tastenkürzel aus der guten alten Zeit?
          ^W - Wort links vom Cursor löschen
          ^H - Zeichen links vom Cursor löschen (Backspace)
          ^Y - aktuelle Zeile löschen
          und viele mehr.

          Sorry, zur guten alten Zeit hab ich noch nicht gehackt. Ich kenne solche Sachen wie DOS oder Windows 3.1 nur noch vom alten 486er meiner Mutter, aber außer Prince of Persia, Lemminge und Gorilla habe ich da nicht viel dran gemacht. Mann, da habe ich wohl einiges an Spaß – noch in den Kinderschuhen – verpasst, oder?

          Viele Grüße,
          Robert