<a href="./index.html"><img id="Bild3" height="40" width="44" src="file:///C:/Programme/NetObjects/NetObjects Fusion 10.0/User Sites/CSSTest/Assets/auge40.jpg" border="0" alt="auge40" title="auge40" name="foo"; onmouseover = "ein_ausblenden(this.name, 'in');"></a></div>
In Deinem HTML sind die Anführungszeichen falsch verschachtelt sowie ein Semikolon und ein paar Leerzeichen zu viel:
<img id="Bild3" height="40" width="44" src="../assets/images/auge40.jpg" border="0" alt="auge40" title="auge40" name="foo" onmouseover="ein_ausblenden(this.name, 'in');">
So wäre es richtig.
Oder habe ich hier bereits grundsätzlich falsch verstanden, WO du Mouseover und Name="foo" implementierst?
Ich mache das am Ende des eingebundenen JS-Scripts via window.onload, du schreibst es statisch ins HTML. Das Ergebnis ist das Gleiche.
Ist (this.name) ein Automatismus, der direkt das Name-Attribut ausliest?
In dem Fall ja. "this" ist in diesem Kontext eine Referenz auf das HTML-Element, über dem onmouseover gefeuert hat, bei Dir das IMG-Element. "this.name" enthält den Wert des name-Attributes.
Habe ich überhaupt eine Möglichkeit aus dem Quelltext deiner Testseite die TestTextfeld.js auszulesen oder einzusehen???
Ja, sie ist im Head eingebunden, du kannst sie Dir aber auch direkt ansehen:
http://test.anaboe.net/testtextfeld.js
Prinzip verstanden, an der Umsetzung hakt es aber wie gesagt. Als Variable definieren? über der Funktion platzieren, direkt nach Einleitung des Scripts?
Ja. Wenn man eine JS-Datei im Head-Bereich einbindet, wird in ihr enthaltener JS-Code ausgeführt, und somit auch die Definition des Blendtext-Objektes.
function ein_ausblenden(elemName, Direction) {
Wird hier automatisch die var=elemName mit "this.name" aus dem Mouseover "versorgt"? Hätte dafür nicht elemName noch als var im Vorfeld definiert werden müssen?
Nein.
obj.innerHTML = Blendtext[elemName];
Hier hänge ich daran, wie elemName wie oben bereits erwähnt mit "Inhalten" versorgt wird.
Indem der Funktion elemName übergeben wird. Das Objekt Blendtext hat für jeden möglichen Namen eine Eigenschaft, also Blendtext.foo, Blendtext.bar usw., in welcher der Erläuterungstext gespeichert ist. Da man aber bei Objekt.Eigenschaft den Namen der Eigenschaft kennen muss, dieser aber in der Funktion variabel ist (es soll ja verschiedene Texte geben), muss man es halt so schreiben, wie oben: Objekt[Variable_mit_dem_Name_der_Eigenschaft].
Ich habe nun meine Testseite mit oben beschriebenen Code nochmals online gestellt... Resultat? Es tut sich leider absolut nix...:-(
Auf die Fehlerkonsole hat Dich Struppi bereits hingewiesen. Nur zum Einstieg:
[code lang=Javascript]var Blendtext = new Object;
var Blendtext.HTMLObjID = 'box';
var Blendtext.Start = 0;
var Blendtext.Ende = 240;
var Blendtext.foo = "<p>Beschreibung zu Link 1</p>";
var Blendtext.bar = "<p>Beschreibung zu Link 2"</p>";
Du hast Blendtext als Variable definiert, deren Gültigkeit sich auf die umschließende Funktion beschränkt. Jedesmal, wenn sie aufgerufen wird, wird das Blendtext-Objekt neu angelegt. Das vermeidest Du, indem Du oben stehenden JS-Code nach Korrekturen vor der Funktion einfügst.
Zu den Fehlern:
Du definierst mit `var Blendtext = new Object();`{:.language-Javascript} Deine Variable Blendtext (in diesem Fall als Objekt). Wenn Du zu diesem Objekt Eigenschaften definierst (HTMLObjID, Start, Ende, foo und bar), darfst Du kein var vor die Zuweisungen setzen, denn die Variable Blendtext ist bereits definiert. Das ist die Hauptursache für den JS-Fehler, alles andere sind Tippfehler, die bekommst Du alleine raus :)
Siechfred