joyly: Fehler im JS.. Bitte helft mir!

Hallo ihr Lieben ;)
Okay, ich bin ganz neu hier, habe aber direkt eine kleine Frage...
Ich habe absolut keinen Schimmer, wo das Problem bei meinem Javascript liegt :(

Nunja, ich bin dabei eine Seite zu coden. Dort habe ich eine Datei menue.html, wo zwei Buttons drinne sind. Diese sollen bei einem Mouseover immer in 'xx_o.gif' verwandeln, bei Mouseout in 'xx_p.gif' und bei einem Mousedown (Klick!) sollen sie sich in 'xx_a.gif' verwandeln.
Ich hoffe, das habe ich jetzt richtig gaschrieben.
Nunja, jedenfalls bekomme ich bei meinem Code immer folgenden JS-Fehler:

------------------------------------------------------------
Zeile:   17
Zeichen: 2
Fehler:  'document[...]' ist Null oder kein Objekt
Code:    0
------------------------------------------------------------

Nunja, ich weiß wirklich nicht, woran das liegen kann *seufz*
Hier nun mal der Inhalt der menue.html:

------------------------------------------------------------
<html>

<script language="Javascript">
<!--
bo_o = new Image;(8,8)
bo_o.src = "img/bo_o.gif";
bo_p = new Image;(8,8)
bo_p.src = "img/bo_p.gif";
bo_a = new Image;(8,8)
bo_a.src = "img/bo_a.gif";

sh_o = new Image;(8,8)
sh_o.src = "img/sh_o.gif";
sh_p = new Image;(8,8)
sh_p.src = "img/sh_p.gif";
sh_a = new Image;(8,8)
sh_a.src = "img/sh_a.gif";
//-->
 </script>

<!-- ------------------------------------------------ functions -------------------------------------------- -->
 <script language="Javascript" src="bachmann.js"></script>
 <!-- ------------------------------------------------------------------------------------------------------- -->

<body bgcolor="#647279" marginwidth="0" marginhight="0" topmargin="0" leftmargin="0">
  <table border="0" cellspacing="0" cellpadding="0" height="24" width="100%">
   <tr align="right">
    <th align="left"><img src="img/line.gif" width="1" height="22" align="left" hspace="0" vspace="0"><a href="frameset.html" target="main" onmouseover="mySwap( 'bo', 'bo_o' )" onmouseout="mySwap( 'bo', 'bo_p' )" onmousedown="mySwap( 'bo', 'bo_a' )"><img src="img/bo_p.gif" border="0" align="left" hspace="0" vspace="0"></a><img src="img/line.gif" width="1" height="22" align="left" hspace="0" vspace="0"></th>
    <th align="right"><img src="img/line.gif" width="1" height="22" align="right" hspace="0" vspace="0"><a href="http://www.bachmann.at" target="_top" onmouseover="mySwap( 'sh', 'sh_o' )" onmouseout="mySwap( 'sh', 'sh_p' )" onmousedown="mySwap( 'sh', 'sh_a' )"><img src="img/sh_p.gif" border="0" align="right" hspace="0" vspace="0"></a><img src="img/line.gif" width="1" height="22" align="right" hspace="0" vspace="0"></th>
   </tr>
  </table>
 </body>

</html>
------------------------------------------------------------

Und hier die entsprechende Passage aus der bachmann.js Datei!
Jedoch weiß ich nicht genau, wo da der Fehler ist:

------------------------------------------------------------
function mySwap ( which, what ) {
 document[which].src = eval ( what + '.src' )
}
------------------------------------------------------------

Ich hoffe ihr könnt mir helfen Leute, ich bin hier echt am verzweifeln...
Wenn ihr mehr Code oder so braucht sagt bescheid!

Liebe Grüße Joyly!--
Besucht auch mein Board:
http://www.mixboard.de

  1. Hi joyly,

    ich habe jetzt zwar nur erstmal kurz geguckt, aber ist der erste Fehler nicht schon dieser hier?

    bo_o = new Image;(8,8)

    Das Semikolon muss doch jeweils nach der Klammer stehen oder? Vielleicht liegt es ja schon daran, falls nicht, müsste man
    mal einen etwas genaueren Blick darauf werfen. :)

    Viele Grüße
    Ben

    --
    Phantasie ist wichtiger als Wissen. - Albert Einstein
    1. Hi,
      Nein, muss es nicht.
      Auf der Seite www.bachmann.at wird das selbe Grundscript verwendet und die haben da kein Problem.
      Ich habe eigentlich die Seite kopiert und nur angepasst...
      Und bei denen funktioniert das wunderbar und das Javascript (bachmann.js) ist bei denen auch das selbe!

      1. Hi,

        dann sieh dir mal Cheatahs Antwort an.

        Mal was anderes: Hast du da nachgefragt, ob du das benutzen darfst?

        Viele Grüße
        Ben

        --
        Phantasie ist wichtiger als Wissen. - Albert Einstein
        1. Hi,

          dann sieh dir mal Cheatahs Antwort an.

          Mal was anderes: Hast du da nachgefragt, ob du das benutzen darfst?

          Viele Grüße
          Ben

          Ja tu ich grade...
          Ja, ich mache grade hier Praktikum und soll für das Technische Büro Bochum von Bachmann die Homepage umwandeln.
          Siehe: www.bachmann-electronic.com

          Liebe Grüße Joyly!

          --
          Besucht auch mein Board:
          http://www.mixboard.de
  2. Hi,

    <script language="Javascript">

    ERROR: Required attribute "type" missing.

    bo_o = new Image;(8,8)

    "new Image()" verlangt mindestens die Klammern. "(8,8)" ist keine gültige JavaScript-Anweisung.

    <script language="Javascript" src="bachmann.js"></script>

    ERROR: Required attribute "type" missing.

    <body bgcolor="#647279" marginwidth="0" marginhight="0" topmargin="0" leftmargin="0">

    Du solltest Dich mit CSS beschäftigen.

    <table border="0" cellspacing="0" cellpadding="0" height="24" width="100%">

    height ist kein gültiges Attribut für <table>.

    <img src="img/line.gif" width="1" height="22" align="left" hspace="0" vspace="0">

    ERROR: Required attribute "alt" missing.

    function mySwap ( which, what ) {
    document[which].src = eval ( what + '.src' )
    }

    eval is evil. Versuche nach Kräften, es anders zu lösen.

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Hi,
      Hmmm, also bis heute bin ich immer mit dem Code zurechtgekommen.
      Die Seite www.bachmann.at verwendet den selben Code (ist von einem prof. Webdesiner erstellt worden!) und ich baue auf das selbe System auf und modifiziere es nur! Deswegen frage ich mich, wieso das einfach nicht klappen will ;(

      Liebe Grüße Joyly!

      --
      Besucht auch mein Board:
      http://www.mixboard.de
      1. Hi,

        [...] (ist von einem prof. Webdesiner erstellt worden!)[...]

        Das würde ich stark bezweifeln, wenn sogar "nich-prof. Webdesigner" wie ich auf Anhieb einen Fehler finden, oder?

        Viele Grüße
        Ben

        --
        Phantasie ist wichtiger als Wissen. - Albert Einstein
        1. Hi,

          [...] (ist von einem prof. Webdesiner erstellt worden!)[...]
          Das würde ich stark bezweifeln, wenn sogar "nich-prof. Webdesigner" wie ich auf Anhieb einen Fehler finden, oder?

          och, was sich heutzutage alles "Profi" schimpft... nun ja, letzten Endes bedeutet die Bezeichnung ja nur "macht es beruflich", sagt aber nichts über die Qualität aus.

          Cheatah

          --
          X-Will-Answer-Email: No
          1. Hi,

            [...] (ist von einem prof. Webdesiner erstellt worden!)[...]
            Das würde ich stark bezweifeln, wenn sogar "nich-prof. Webdesigner" wie ich auf Anhieb einen Fehler finden, oder?

            och, was sich heutzutage alles "Profi" schimpft... nun ja, letzten Endes bedeutet die Bezeichnung ja nur "macht es beruflich", sagt aber nichts über die Qualität aus.

            Cheatah

            Okay, ich selber finde den QT auch nicht wirklich gut, aber ich bin ja auch kein Freak ;) Lerne erst sein kurzer Zeit HTML!

            Liebe Grüße Joyly!

            --
            Besucht auch mein Board:
            http://www.mixboard.de
  3. Moin,
    1. beim ersten Lesen fällt mir auf, dass

    bo_o = new Image;(8,8)

    und folgende Deklarationen syntaktisch falsch sind
    Ich vermute, dass du Bild-Objekte, die 8x8 pixel große Bilder aufnehmen sollen, erstellen willst.
    Das geht aber so
    bo_o = new Image(8,8);
    Entscheidend ist die richtige Platzierung des ;
    2.

    <a href="frameset.html" target="main" onmouseover="mySwap( 'bo', 'bo_o' )" onmouseout="mySwap( 'bo', 'bo_p' )" onmousedown="mySwap( 'bo', 'bo_a' )"><img src="img/bo_p.gif" border="0" align="left" hspace="0" vspace="0"></a>

    Das Objekt bo gibt es bei dir nicht. Du weißt zwar, dass damit das in den <a>-Tag eingeschlossene Bild gemeint ist, das mußt du aber auch dem Browser mitteilen, also <img id="bo" ...>
    3. würde ich dir empfehlen, auf das DOM umzusteigen, statt

    document[which].src = eval ( what + '.src' )

    Kann dir grad gar nicht sagen, ob das ausser dem Netscape 4.x noch irgendein anderer Browser richtig versteht. Besser ist folgendes

    document.getElementById(which).src=what.src;
    und bei den Aufrufen
    mySwap( 'bo', bo_p) verwenden, also die letzen '' wegzulassen.
    Nachzulesen
    http://selfhtml.teamone.de/dhtml/modelle/dom.htm

    1. Moin,

      1. beim ersten Lesen fällt mir auf, dass

      bo_o = new Image;(8,8)
      und folgende Deklarationen syntaktisch falsch sind
      Ich vermute, dass du Bild-Objekte, die 8x8 pixel große Bilder aufnehmen sollen, erstellen willst.

      Nein, die Bilder sind nixht 8x8 Pixel groß... Sie sind alle 105x24 Pxl groß, diese (8,8) haben mich aber auch schon immer verwundert...
      meint ihr, ich kann da einfach immer ein    new Image();
      draus machen?

      Das Objekt bo gibt es bei dir nicht. Du weißt zwar, dass damit das in den <a>-Tag eingeschlossene Bild gemeint ist, das mußt du aber auch dem Browser mitteilen, also <img id="bo" ...>

      ist folgendes

      Sorry, aber ich bin JS-Technisch nicht sehr versiert... Wo genau muss ich dieses <img id="bo" ...> hinsetzen?

      Liebe Grüße Joyly!

      --
      Besucht auch mein Board:
      http://www.mixboard.de
      1. Nein, die Bilder sind nixht 8x8 Pixel groß... Sie sind alle 105x24 Pxl groß, diese (8,8) haben mich aber auch schon immer verwundert...
        meint ihr, ich kann da einfach immer ein    new Image();
        draus machen?

        Ja, oder eben bo=ne Image(105,24);

        Sorry, aber ich bin JS-Technisch nicht sehr versiert... Wo genau muss ich dieses <img id="bo" ...> hinsetzen?

        du mußt für JEDES Bild, das du ändern willst, einen Namen oder eben eine ID vergeben, damit JS es 'finden' kann. Also durchforste sämtliche deiner schon geschrieben <img>-Tags, und wenn du ein Bild findest, das geändert werden will/soll, dann verpaß ihm eine ID, indem du in das <img>-Tag eben id="irgendwas" einfügst. Denk aber dran: eine ID MUSS eindeutig sein!

        1. du mußt für JEDES Bild, das du ändern willst, einen Namen oder eben eine ID vergeben, damit JS es 'finden' kann. Also durchforste sämtliche deiner schon geschrieben <img>-Tags, und wenn du ein Bild findest, das geändert werden will/soll, dann verpaß ihm eine ID, indem du in das <img>-Tag eben id="irgendwas" einfügst. Denk aber dran: eine ID MUSS eindeutig sein!

          hmm, aber ich habe nur 2mal einen <img>Tag... Und das ist da, wo die Grafiken erscheinen sollen...
          Da steht jetzt bei mir:
          -----
          <img id="bo" src="img/bo_p.gif" border="0" align="left" hspace="0" vspace="0">
          -----
          und
          -----
          <img id="bo" src="img/sh_p.gif" border="0" align="right" hspace="0" vspace="0">
          -----

          Ist das denn nun so richtig?
          Sonst habe ich nirgendwo einen img-Tag ...

          Liebe Grüße Joyly!

          --
          Besucht auch mein Board:
          http://www.mixboard.de
          1. <img id="bo" src="img/bo_p.gif" border="0" align="left" hspace="0" vspace="0">
            <img id="bo" src="img/sh_p.gif" border="0" align="right" hspace="0" vspace="0">

            beinahe, nur was schrieb ich zum Thema Eindeutigkeit? also beim zweiten <img ..> bitte eine andere id, z.B. id="sh", und beachte den Hinweis auf DOM in der ersten Antwort. Sonst hast du vielleicht keinen Fehler mehr, aber das Skript tut nicht ganz das, was du erwartest.

            1. Gut, ich weiß, es ist eine schwere Geburt bei mir ;) *g* *heul*
              Naja, also hier nochmal die atuellen Ausschnitte:

              Aus der bachmann.js
              -----------
              document.getElementById(which).src=what.src;
              -----------

              Die beiden Zeilen aus der menue.html
              ----------
                  <th align="left"><img src="img/line.gif" width="1" height="22" align="left" hspace="0" vspace="0"><a href="frameset.html" target="main" onmouseover="mySwap( 'bo', bo_o )" onmouseout="mySwap( 'bo', bo_p )" onmousedown="mySwap( 'bo', bo_a )"><img id="bo" src="img/bo_p.gif" border="0" align="left" hspace="0" vspace="0"></a><img src="img/line.gif" width="1" height="22" align="left" hspace="0" vspace="0"></th>
                  <th align="right"><img src="img/line.gif" width="1" height="22" align="right" hspace="0" vspace="0"><a href="http://www.bachmann.at" target="_top" onmouseover="mySwap( 'sh', sh_o )" onmouseout="mySwap( 'sh', sh_p )" onmousedown="mySwap( 'sh', sh_a )"><img id="sh" src="img/sh_p.gif" border="0" align="right" hspace="0" vspace="0"></a><img src="img/line.gif" width="1" height="22" align="right" hspace="0" vspace="0"></th>
              ----------

              Doch nun habe ich einen neuen Fehler ;(
              ------------------------
              Zeile:   28
              Zeichen: 1
              Fehler:  Objekt erwartet
              Code:    0
              ------------------------

              Liebe Grüße Joyly!

              --
              Besucht auch mein Board:
              http://www.mixboard.de
              1. moin

                pack das doch erstmal alles zusammen, denn
                1. die externe js-Datei brauchst du gar nicht, du willst daraus ja nur den Wechsel machen
                2. hab ich mir die mal angesehen, dort ist der "Image;(8,8)" Fehler noch drin.

                also
                <script type="text/javascript">
                 var bo_a=new Image();
                  bo_a.src="img/bo_a.gif"; // kann sein, das du den Dateinamen ändern musst
                 var sh_a=new Image();
                 sh_a.src=new Image();
                 //gleiches Spiel noch für bo_o, sh_o in Eigenleistung ;-)

                function mySwap(which,what) {
                 var tmp=document.getElementById(which);
                 if (tmp) tmp.src=what.src;
                }
                </script>

                den Rest ersmal so lassen.

                1. Ja, ist klar, ich habe die Files auch noch nicht hocgeladen, ich habe alles erstmal lokal getestet!

                  Aber vielen vielen Dank...
                  Es klappte!
                  Ich lade es gleich mal hoch und dann könnt ihr staunen *g*
                  www.bachmann-electronic.com

                  Liebe Grüße Joyly!

                  --
                  Besucht auch mein Board:
                  http://www.mixboard.de
  4. Hallo ihr Lieben ;)
    Okay, ich bin ganz neu hier, habe aber direkt eine kleine Frage...
    Ich habe absolut keinen Schimmer, wo das Problem bei meinem Javascript liegt :(

    Nunja, ich bin dabei eine Seite zu coden. Dort habe ich eine Datei menue.html, wo zwei Buttons drinne sind. Diese sollen bei einem Mouseover immer in 'xx_o.gif' verwandeln, bei Mouseout in 'xx_p.gif' und bei einem Mousedown (Klick!) sollen sie sich in 'xx_a.gif' verwandeln.
    Ich hoffe, das habe ich jetzt richtig gaschrieben.

    Nimm das: http://home.arcor.de/struebig/js/mouse_over/mouse_over.htm

    Struppi.