Struppi: Javascript funktioniert nicht mit xhtml

Beitrag lesen

Das verkürzte Dokument:

enthält viele falsche und unnötige Sachen

<body onload="javascript:InitialiseScrollableArea()">

Wozu das Label 'javascript:'?
unnötig!

<p><a href="javascript:;" onmouseover="PerformScroll(-7)" onmouseout="CeaseScroll()">[scroll up]</a></p>

Warum der Link?
onmouseover funktioniert auch mit dem <p> Element.

=========================================
function verifyCompatibleBrowser(){
    this.ver=navigator.appVersion
    this.dom=document.getElementById?1:0
    this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
    this.ie4=(document.all && !this.dom)?1:0;
    this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;

this.ns4=(document.layers && !this.dom)?1:0;
    this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5)
    return this
}

von sowas ist abzuraten, einfach das prüfen, was du benutzt und gut ist.

this.css=bw.dom?document.getElementById(obj).style:bw.ie4?document.all[obj].style:bw.ns4?eval(nest+'document.'+obj):0;

Dein code ist nicht sonderlich übesichtlich, es hat sich eingebürgert, gewisse Richtlinien beim coden zu beachten, die den Quellcode übersichtlicher machen und damit für den Autor und für Fremde leichter lesbar.

this.obj = obj + "Object"
    eval(this.obj + "=this")

eval() ist evil!
und auch hier in diesem Falle sicherlich ersetzbar.

function MoveArea(x,y){
    this.x=x;this.y=y
    this.css.left=this.x
    this.css.top=this.y

left und top was?
solche CSS angaben erwarten immer eine Einheit.

function MoveAreaDown(move){
if(this.y>-this.scrollHeight+objContainer.clipHeight){
    this.MoveArea(0,this.y-move)
    if(loop) setTimeout(this.obj+".down("+move+")",speed)

Das kann eigentlich nicht funktionieren (kan aber sein, das ich was übersehne habe, vor allem wegen dem eval) window.setTimeout ruft eine Funktion im Kontext window auf, d.h. this ist gleich window und this.obj bzw. windiw.obj muss in diesem Fall ein String sein, der einen globalen Variabelnnamen repräsentatiert.

Struppi.

--
Javascript ist toll (Perl auch!)