Struppi: JavaScripte...was mache ich falsch?!?

Beitrag lesen

<head>
<script type="text/javascript">
<!--
function ZweiFrames(URI1,F1,URI2,F2) {
  Frame1=eval("parent."+F1);
  Frame2=eval("parent."+F2);

eval ist evil!
Es ist überflüssig langsam und es erschwert die Fehlersuche.

Frame1.location.href = URI1;
  Frame2.location.href = URI2;

Es reicht stattdessen zu schreiben:

parent[F1].location.href = URI1;
parent[F2].location.href = URI2;

}
//-->
</script>
</head>
<body>
<a href="javascript:ZweiFrames('URL1.html','FRAME1','URL2.html','FRAME2')">TEXT</a>

Dir ist klar das ohne JS nichts auf deiner Seite geht?

Man kann das ein bisschen verbessern:
<a href="URL1.html" target="FRAME1"
onclick="ZweiFrames(this.href,this.target,'URL2.html','FRAME2')">TEXT</a>

Das zweite Skript nutze ich zum wechseln von Grafiken in der Navigation:

In der Regel läßt sich sowas eleganter mit CSS lösen. ein paar Beispiele: http://css.maxdesign.com.au/index.htm

<HEAD>
<Script Language="JavaScript"><!--

language ist veraltet, es sollte wie oben heißen type="text/javascript"

function changeIt(ImageToChange, ImageToShow) {
if (document.images) { document[ImageToChange].src = ImageToShow; } }

um fehler zu vermeiden sollten die das vohandensein von Objekten überprüft werden:

function changeIt(ImageToChange, ImageToShow)
{
if (!document.images || !document.images[ImageToChange]) return alert('Fehler');
document[ImageToChange].src = ImageToShow;
}

function bar(message) {
if (document.images) { window.status = message; return true } }

Naja, sowas ist nicht gern gesehen, wird aber in aktuellen Browsern sowieso nicht mehr ausgeführt.

</HEAD>
<BODY>
<A href="test1.html" target="Hauptframe" onMouseOver="changeIt('img1','1.gif');
return bar(' ')" onMouseOut="changeIt('img1','11.gif');
return bar(' ')">

Der Teil nach onmouseover muss in einer Zeile stehen. innerhalb HTML attribute sind mehrzeilige Skript nicht möglich.

Struppi.