/(DHTML) Dynamisches Ändern eines Bildes und von CSS-Angaben
mdkiller
- javascript
Hallo Forum!
Im mittlerweile im Archiv-Nirwana gelandeten Thread http://forum.de.selfhtml.org/archiv/2003/12/65357/#m372016 hatte ich eine sehr umfangreiche Funktion zum Wechsel von Bildern bei MouseOver eingestellt. Ich habe sie ein wenig überarbeitet, aber der Fehler bleibt immer noch (IE: Das Objekt unterstützt diese Eigenschaft oder Methode nicht. Firebird: Error: wechsel is not a function. Netscape 7.0: Fehler: wechsel is not a function)
Das ganze Script funktioniert anfangs, später kommen eben diese Fehlermeldungen.
Kann mir jemand helfen, zumindest zu verstehen, warum es anfangs funktioniert und später (nach ca 10-50 Aufrufen, je nach Laune des Browsers) nicht mehr?
Die CSS:
<style type="text/css">
<!--
.chartinactive {font-weight:bold; color:#FF0000; background-color:#FFFFFF; font-family:Arial,Helvetica,sans-serif; font-size:10px;}
.chartactive {font-weight:bold; color:#000000; background-color:#CCCCCC; font-family:Arial,Helvetica,sans-serif; font-size:10px;}
-->
</style>
Einbindung:
<script type="text/javascript" src="./chart.js"></script>
Aufruf:
<img alt="Chart" title="Chart DAX30 (Intraday)" src="http://www.example.com/images/chart.php?typ=DAX" name="curindex" width="175" height="100" border="0"></a><br><a onmouseover="wechsel(0);" class="chartactive" id="daxchart">DAX</a>
<a onmouseover="wechsel(1);" class="chartinactive" id="tecdaxchart">TecDAX</a>
<a onmouseover="wechsel(2);" class="chartinactive" id="dowjoneschart">Dow Jones</a>
<a onmouseover="wechsel(3);" class="chartinactive" id="nasdaqchart">Nasdaq</a>
Und der Inhalt von chart.js
var ids = new Array();
ids[0] = "daxchart";
ids[1] = "tecdaxchart";
ids[2] = "dowjoneschart";
ids[3] = "nasdaqchart";
var quelle = new Array();
quelle[0] = "http://www.example.com/images/chart.php?typ=DAX";
quelle[1] = "http://www.example.com/images/chart.php?typ=TDX";
quelle[2] = "http://www.example.com/extract/chart?INST_ID=0001323&datum=1&hist=0&size=2&sym=INDU.IND";
quelle[3] = "http://www.example.com/extract/chart?INST_ID=0001323&datum=1&hist=0&size=2&sym=NDX.X.IND";
var titel = new Array();
titel[0] = "Chart DAX30 (Intraday)";
titel[1] = "Chart TecDAX (Intraday)";
titel[2] = "Chart Dow Jones (Intraday)";
titel[3] = "Chart Nasdaq (Intraday)";
var active = 0;
function wechsel(c){
if (c!=active){
if ((typeof(document.getElementById)=="function") || (typeof(document.getElementById)=="object"))
{
document.getElementsByTagName('a')[ids[active]].className = "chartinactive";
document.getElementsByTagName('a')[ids[c]].className = "chartactive";
}
else if (document.all){
document.all.ids[active].className = "chartinactive";
document.all.ids[c].className = "chartactive";
}
document.curindex.src = quelle[c];
document.curindex.title = titel[c];
active = c;
}
}
Gruß
mdkiller
Hallo,
<script type="text/javascript" src="./chart.js"></script>
wenn die JS-Datei im selben Ordner liegt, lass mal das "./" weg. Sonst muss hier der richtige (evtl. auch absolute) Pfad stehen.
Gruß, Jürgen
Hallo Jürgen!
<script type="text/javascript" src="./chart.js"></script>
wenn die JS-Datei im selben Ordner liegt, lass mal das "./" weg.
Bringt auch nichts, die Fehler kommen auch, wenn ich die Funktion nihct auslagere.
Gruß
mdkiller
Hallo,
function wechsel(c){
if (c!=active){
if ((typeof(document.getElementById)=="function") || (typeof(document.getElementById)=="object"))
{
document.getElementsByTagName('a')[ids[active]].className = "chartinactive";
document.getElementsByTagName('a')[ids[c]].className = "chartactive";
}
else if (document.all){
document.all.ids[active].className = "chartinactive";
document.all.ids[c].className = "chartactive";
}document.curindex.src = quelle[c];
document.curindex.title = titel[c];
active = c;
}}
für mich sieht es so aus, als würde der Teil mit "curindex" immer aufgerufen.
Gruß, Jürgen
Hallo Jürgen!
für mich sieht es so aus, als würde der Teil mit "curindex" immer aufgerufen.
Fast immer. Nicht, wenn (c=active) ist. So soll es ja auch sein. Ist nach http://selfhtml.teamone.de/javascript/objekte/images.htm#allgemeines auch nicht abhängig von dem verwendeten DOM-Modell.
Das ist der Chart, der ausgetauscht werden soll. Die Unterscheidung nach dem verwandten DOM ist nur für die CSS-Angaben nötig.
Gruß, Jürgen
Gruß
mdkiller
Hallo Jürgen!
Habs auch mit:
document.getElementsByTagName('img')['curindex'].src = quelle[c].src;
document.getElementsByTagName('img')['curindex'].title = quelle[c].title;
bzw.
document.all.tags('img')['curindex'].src = quelle[c].src;
document.all.tags('img')['curindex'].title = quelle[c].title;
versucht, gleiches Ergebnis.
Gruß
mdkiller
Hallo,
ich glaube, Du solltest dein ganzes Werk (reduziert auf den Fehler, aber als vollständige Datei einschließlich Javascript) hier posten oder einen Link angeben, damit man Deinen Fehler nachvollziehen kann. Denn im Moment sehe ich auch nicht, was falsch ist.
Gruß, Jürgen
Hallo!
http://www.sparkasse-iserlohn.de Auf der Startseite oben rechts der Chart. Wenn man öfter mal mit der Maus drüberfährt, kommt der Fehler irgendwann.
Gruß
mdkiller
Hallo,
mein alter IE5.5 sagt mir, dass ein Fehler in Zeile 539 bzw. 540 auftritt (...Objekt unterstützt die Methode nicht ...). Du musst Dir die Seite entweder mit dem Mozilla ansehen (hab ich nur bei der Arbeit) oder aber, und das wäre mein Tip, Du löscht alles Beiwerk von der Seite bis auf den Chart und alle Scripts bis auch das Wechsel-Script, packst alles in eine Datei und dann müsste der Fehler schhnell zu finden sein.
Gruß, Jürgen
Hallo,
mein alter IE5.5 sagt mir, dass ein Fehler in Zeile 539 bzw. 540 auftritt (...Objekt unterstützt die Methode nicht ...). Du musst Dir die Seite entweder mit dem Mozilla ansehen (hab ich nur bei der Arbeit) oder aber, und das wäre mein Tip, Du löscht alles Beiwerk von der Seite bis auf den Chart und alle Scripts bis auch das Wechsel-Script, packst alles in eine Datei und dann müsste der Fehler schhnell zu finden sein.
hab ich versucht, und der Fehler tritt nicht mehr auf *grmpf* Also weitersuchen im Rest des Quellmülls (den ich nicht verzapfe, sondern das Programm, mit dem ich arbeiten MUSS...)
Gruß, Jürgen
Gruß
mdkiller
Hallo,
ich habe mal in den Quellcode geschaut:
script language="JavaScript">
ist nicht richtig. Ersetz es mal durch:
<script type="text/javascript" language="JavaScript">
Dieses "wechsel is not a function" klingt für mich so, als würde die die JS-Datei garnicht eingefügt. Außerdem meldet der Validator noch, dass etwas mit den <noscript> nicht in Ordnung ist.
Da fällt mir übrigens ein, wenn JS Funktionen in der Framedefinitions-Seite stehen oder eingefügt werden, könne Sie in den Inhaltsseiten nicht mit name() aufgerufen werden, sondern mit (ich weis es nicht genau) top.name(). Check das doch auch noch mal. Bau evtl. doch den "include" in die Inhaltsseite mit dem Chart.
Gruß, Jürgen
Hallo!
ich habe mal in den Quellcode geschaut:
script language="JavaScript">
ist nicht richtig. Ersetz es mal durch:
<script type="text/javascript" language="JavaScript">
Ich weiß. allerdings stehen mehrere <script>-tags drin, und das betroffene wird auch mit type="text/javascript"> eingebunden. An den anderen kann ich so nichts ändern, da das Programm das so macht. Habe die Programmierer schon angesprochen, mal sehen, wann sich da was tut.
Dieses "wechsel is not a function" klingt für mich so, als würde die die JS-Datei garnicht eingefügt. Außerdem meldet der Validator noch, dass etwas mit den <noscript> nicht in Ordnung ist.
Das <noscript> steht halt da so dumm rum *g* Steht nur im Bereich von <html></html>, da fehlt dann ein <body> oder so...
Da fällt mir übrigens ein, wenn JS Funktionen in der Framedefinitions-Seite stehen oder eingefügt werden, könne Sie in den Inhaltsseiten nicht mit name() aufgerufen werden, sondern mit (ich weis es nicht genau) top.name(). Check das doch auch noch mal. Bau evtl. doch den "include" in die Inhaltsseite mit dem Chart.
Stand die ganze Zeit in der "pb.htm", also in der Datei, in der auch der Chart angezeigt wird.
Gruß, Jürgen
Gruß
mdkiller