Rob: Was mache ich falsch?

Nabend zusammen,

um den folgenden Quelltext geht es:

(im head:)
<script type="text/javascript" language="JavaScript">
<!--
Normal1 = new Image();
Normal1.src = "gfx/button1_o.png";
Highlight1 = new Image();
Highlight1.src = "gfx/button1_h.png";

function Bildwechsel(Bildname,Bildobjekt) {
 window.document.Bildname.src = Bildobjekt.src;
}
//-->
</script>

(im body:)
<a href="index.php" target="_self" onMouseOver="Bildwechsel('button1',Highlight1)" onMouseOut="Bildwechsel('button1',Normal1)">
<img src="gfx/button1_o.png" border=0 name="button1"></a>

Ich bekomme immer die Fehlermeldung:
window.document.Bildname ist Null oder kein Objekt.

Was hat das zu bedeuten?

mfg Robert

  1. Hi,

    <img src="gfx/button1_o.png" border=0 name="button1"></a>

    So nebenbei: border=0 <-- Anführungszeichen fehlen bei 0

    E7

    1. So nebenbei: border=0 <-- Anführungszeichen fehlen bei 0

      Gut aufgepasst! Da liegt aber nicht das Problem!!!

      mfg Rob

    2. Hallo,

      <img src="gfx/button1_o.png" border=0 name="button1"></a>
      So nebenbei: border=0 <-- Anführungszeichen fehlen bei 0

      nein, sie fehlen nicht. Laut http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2 dürfen die Anführungszeichen weggelassen werden, wenn der Wert des Attributes nur die Zeichen a-z, A-Z, 0-9 sowie -_.: enthält.

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      1. Hi,

        Laut http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2

        HTML 4. Und was ist mit XHMTL?

        E7

        1. Hallo,

          Laut http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2
          HTML 4. Und was ist mit XHMTL?

          in xhtml würden sie fehlen - allerdings würden dann auch ein </img> bzw. ein '/' vor dem schließenden '>' fehlen ... Ich glaube aber nicht dass Rob xhtml schreibt :-)

          Grüße aus Nürnberg
          Tobias

          --
          Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  2. Hallo Robert,

    window.document.Bildname.src = Bildobjekt.src;

    <img src="gfx/button1_o.png" border=0 name="button1"></a>

    dein Bild heisst "button1", nicht "Bildname".

    Grüße
    Andreas

    --
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
    (Rich Cook)
    1. Hallo Robert,

      window.document.Bildname.src = Bildobjekt.src;

      <img src="gfx/button1_o.png" border=0 name="button1"></a>

      dein Bild heisst "button1", nicht "Bildname".

      Grüße
      Andreas

      Das ist mir klar. Aber steckt in diesem Fall nicht 'button1' in der Variable 'Bildname'??? Ich dachte, dass sollte so klappen.

      mfg Rob

      1. Hi,

        Das ist mir klar. Aber steckt in diesem Fall nicht 'button1' in der Variable 'Bildname'??? Ich dachte, dass sollte so klappen.

        Ganz einfach: Wenn es nicht klappt, dann hast Du wohl falsch gedacht! =;-)

        document.images[Bildname].src wäre dein Freund gewesen ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  3. hi,
    du brauchst den Wert aus Bildname, nicht das <img name=Bildname>
    versuche mal:

    window.document.Bildname.src = Bildobjekt.src;

    window.document[Bildname].src = Bildobjekt.src;
     mfg Hint

    1. hi,
      du brauchst den Wert aus Bildname, nicht das <img name=Bildname>
      versuche mal:

      window.document.Bildname.src = Bildobjekt.src;
          window.document[Bildname].src = Bildobjekt.src;
      mfg Hint

      Das hat es leider nicht gebracht.

      Fehler:
      window.document[...] ist Null oder kein Objekt.

    2. Hallo, Hint!

      versuche mal:
          window.document[Bildname].src = Bildobjekt.src;

      mit "versuche mal" haben sich schon leute in die luft gesprengt, also sollte man besser wissen, was man tut.

      Hallo, Rob!

      "window" hat mit deiner gewünschten aktion garnichts zu tun.
      du willst ein element von "document" beeinflussen, also:

      document.

      und auf das element kannst du zugreifen, wenn du aus dem namen eine dateiweit eindeutige id machst über:

      document.getElementById(Bildname).

      Zusammenfassung:

      document.getElementById(Bildname).src = Bildobjekt.src;

      übrigens lässt sich das ganze viel eleganter per css lösen. infos dazu über die suche.

      freundl. Grüsse aus Berlin, Raik

      1. Hallo,

        mit "versuche mal" haben sich schon leute in die luft gesprengt, also sollte man besser wissen, was man tut.

        Mit Javascript? Oder ging es hier um Sprengstoff?

        "window" hat mit deiner gewünschten aktion garnichts zu tun.
        du willst ein element von "document" beeinflussen, also:

        document.

        http://selfhtml.teamone.de/javascript/objekte/document.htm. Siehe die erste Erläuterung. Ok?
        Deine weiteren Ausführungen mögen ja richtig sein, doch erzähle das mal meinem NS4.7.

        function Bildwechsel(Bildname,Bildobjekt) { //Aufruf: Bildwechsel('button1',Highlight1)
           window.document[Bildname].src = Bildobjekt.src;
        }

        Wenn der erste Operand des Operators [] eine Referenz auf ein Objekt ist, sollte der zweite Operand ein Ausdruck sein, der als String ausgewertet wird.
        Trifft doch hier zu.(Bildname='button1')
        Damit habe ich den Quelltext des Ausgangspostings fehlerfrei auf mehreren Browsern (4) ausführen können.
        Was Rob uns an Quelltext vorenthalten hat, der zu seinem Fehler führt kann ich nur raten.
        Ich verstehe das als gültigen Javascript-Code. Wenn du da andere Informationen hast, bitte ich um einen Hinweis dazu, damit ich mich updaten kann.
        Einen netten Tag noch
        Hint

        1. Hi,

          window.document[Bildname].src = Bildobjekt.src;

          Das DOCUMENT hat nicht den Bildnamen, IMAGES tragen ihn! ;-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Hallo Cybaer,

            Das DOCUMENT hat nicht den Bildnamen, IMAGES tragen ihn! ;-)

            Ist das zwingend? Wenn ja warum?
            document[bildname].src
            (Mit und ohne window. davor):)
            reicht bei meinen Versuchen solange der Bildname eindeutig im document bleibt und nicht ein anderes Objekt ebenfalls den Namen trägt.

            mfg
            Hint

            1. Hi,

              Ist das zwingend?

              Vermutlich(!) nicht, aber deutlich sauberer.

              reicht bei meinen Versuchen solange der Bildname eindeutig im document bleibt und nicht ein anderes Objekt ebenfalls den Namen trägt.

              Was passieren könnte (aber der Autor sollte es ja wissen - und nicht vergessen ;-))

              Auf der einen Seite: images ist für die Bilder vorgesehen, da darf man das auch schreiben.

              Auf der anderen Seite: Solange JS eine logische Eindeutigkeit feststellen kann, wird es auch ohne klappen (das ist auch *explizit* gewollt - deswegen reicht ja z.B. auch document.irgendwas statt window.document.irgendwas ;-}) ...

              Gruß, Cybaer

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              1. Hallo  Cybaer,
                Danke.
                nice day
                Hint

      2. Hi,

        mit "versuche mal" haben sich schon leute in die luft gesprengt, also sollte man besser wissen, was man tut.

        So so, denn ...

        Zusammenfassung:

        document.getElementById(Bildname).src = Bildobjekt.src;

        ... mit Verlaub ist dein Vorschlag ziemlich suboptimal. :-o

        Es gibt IMHO keinen Grund, eine funktionierende, bewährte JS-1.1-Syntax (also mit entsprechender Browserunterstützung) durch eine JS-1.5-Syntax (mit geringerer Browserunterstützung) zu ersetzen.

        Jedenfalls nicht so lange NAME noch ein gültiges Attribut für IMG ist ... :-)

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      3. document.getElementById(Bildname).src = Bildobjekt.src;

        Das war die Lösung des Problems. Ich danke Dir!!!

        mfg Rob

        1. Hi,

          Das war die Lösung des Problems. Ich danke Dir!!!

          Glaube ihm nicht, Du hast Dir soeben neue Probleme eingefangen ... 8-)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  4. um den folgenden Quelltext geht es:

    Es gibt 1000 bessere und den besten findest du hier http://home.arcor.de/struebig/js/mouse_over/index.html ;-)
    Du benötigst in deinem Quellcode keine einzige Zeile JS und kannst sogar noch mehr als nur mouseover einbauen.

    Aber noch sinnvoller ist es sowas mit CSS zu gestalten.

    Struppi.