Javascript auslagern klappt nicht.
Ralph
- javascript
Ich habe im Firefox eine Webpage gabastelt und im Editor das Layout bereinigt. (noch nicht im www zu finden - daher kein Link.) Auf der Seite sind 5 Schaltflächen, die mittels Javascript ihr Aussehen bei Mouseover ändern. Das Javascript ist zweiteilig, ein Teil im Head, ein Teil im Body. Vorweg: Wenn ich das im Body lösche gehts trotzdem...
Das Script funktioniert bestens. Solange bis ich das Script im <Head> auslagere. Dann funktioniert nichts. Bekomme keine Fehlermeldung, die Schaltflächen bleiben, wie sie sind. Seltsamerweise funktioniert das ganze am PC im Büro, aber nicht zu Hause. Beide mit Win XP + Internet Explorer.
Java Script ist generell zugelassen - sonst würde es nicht klappen solange es in der html Datei drinne ist.
Befehlssyntax ist bekannt, kann man ja nun wirklich überall nachlesen. <script language="JavaScript" src="bilder/hallo.js"></script> Bis auf den src Teil ist es im eingebundenen Teil ja auch identisch.
Pfadangabe ist korrekt, die Bilder von da werden gefunden. Dateiname ist auch korrekt.
Die Html Elemente <script></script> <!hide //--unhide > habe ich im js weggelassen, drin lassen klappt genau so wenig.
Das html (?) Objekt <funktion...> (siehe unten) wegnehmen klappt auch nicht.
Öffne ich das .js mit dem Microsoft Windows Script host gibts bei beiden scripts Fehlermeldungen (Syntaxfehler oder 'document' unknown)
BIN RATLOS...
Hier nun das Script:
<function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_nbGroup(event, grpName) { //v6.0
var i,img,nbArr,args=MM_nbGroup.arguments;
if (event == "init" && args.length > 2) {
if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
nbArr[nbArr.length] = img;
for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = img.MM_dn = args[i+1];
nbArr[nbArr.length] = img;
}}
} else if (event == "over") {
document.MM_nbOver = nbArr = new Array();
for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])?args[i+1] : img.MM_up);
nbArr[nbArr.length] = img;
}
} else if (event == "out" ) {
for (i=0; i < document.MM_nbOver.length; i++) { img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
} else if (event == "down") {
nbArr = document[grpName];
if (nbArr) for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
document[grpName] = nbArr = new Array();
for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
nbArr[nbArr.length] = img;
}}
}
Hi Ralph,
Das Script funktioniert bestens.
Ist ja auch vom Dreamweaver *g*
Es werden in dem Script konkrete Dinge abgefragt. Lass das Ding wo es ist oder versuche zu verstehen, was da passiert und pass es an...
Viele Grüße
Mathias Bigge
Hi,
Die Html Elemente <script></script> <!hide //--unhide > habe ich im js weggelassen, drin lassen klappt genau so wenig.
Nö, nicht ganz.
<function MM_findObj(n, d) { //v4.01
Da ist noch ein klitze< Rest übrig von einem der Elemente ...
cu,
Andreas