WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   layers in javascript ansprechen (http://www.wcm.at/forum/showthread.php?t=113308)

Pulse-Seeker 25.10.2003 18:36

layers in javascript ansprechen
 
habe folgendes problem:

ich will eine navigationsleiste mit 7 buttons machen. jeder button ist in einer eigenen ebene und jede ebene bewegt sich wenn man den button anklickt.

wie kann ich die ebenen ansprechen (zb anzahl auslesen)?

ich habs schon mit "document.layers.length" probiert aber das funkt nur unter netscape4. ich brauch das script aber für netscape 7 und ie 6.

irgendwelche tipps??? :confused:

jak 26.10.2003 16:01

Zitat:

Das layers-Objekt wird von Netscape ab Version 6.0 nicht mehr unterstützt. Es sollte also nur noch aus Gründen der Rückwärtskompatibilität zu Netscape 4.x Verwendung finden.
Für heutige Browser müsste es mit einem <div> gehen:
Code:

<style>
menuepunkt{position:absolute; left:0; top:0; visibility:hidden; z-index:200;}</style>
<script language="JavaScript" type="text/javascript">
function lib_bwcheck(){ //Browsercheck (needed)
        this.ver=navigator.appVersion
        this.agent=navigator.userAgent
        this.dom=document.getElementById?1:0
        this.opera5=this.agent.indexOf("Opera 5")>-1
        this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
        this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
        this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
        this.ie=this.ie4||this.ie5||this.ie6
        this.mac=this.agent.indexOf("Mac")>-1
        this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
        this.ns4=(document.layers && !this.dom)?1:0;
        this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
        return this
}
var bw=new lib_bwcheck()

function makeMenuItem(obj){
 this.elm= document.getElementById? document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?document.layers[obj]:0;
/* Diese Zeile heißt: "Gibt es document.getElementById? Wenn Ja dann: document.getElementById(obj), sonst: ist bw(in dieser Variable wird der Browser gespeichert) ie4? Ja:document.all[obj] Sonst: bw.ns4? Ja:document.layers[obj] Sonst:0
Danach ist in elm die Id von obj gespeichert. Das bedingung?a:b ist eine Kurzschreibweise für if(bedingung){a}else{b}
*/
 this.css= bw.ns4?this.elm:this.elm.style;
}
item1=new makeMenuItem('Punkt1')
</script>
<div id="Punkt1" class="menuepunkt">Menüpunkt</div>

Probier mal, ob du auf menuepunkt.css.left und menuepunkt.css.top zugreifen kannst. Dann kannst du z.b. folgendes machen:
5 nach rechts
5 nach links

Ich habe Code von dhtmlcentral.com ein bischen modifiziert, daher gehört noch folgendes zwischen <script>und </script>
Code:

/********************************************************************************** 
Dynamic Tooltips
*  Copyright (C) 2001 Michael van Ouwerkerk
*  This script was released at DHTMLCentral.com
*  Visit for more great scripts!
*  This may be used and changed freely as long as this msg is intact!
*  We will also appreciate any links you could give us.
*
*  Made by Michael van Ouwerkerk
* modified by Jak
*********************************************************************************/

Hoffe es funktioniert (und du kommst damit zu recht).

Jak

Pulse-Seeker 27.10.2003 09:38

ich habs jetzt so halbwegs hinbekommen. hab aber immer noch ein problem. schauts euch das mal an -> LINK
der fehler tritt erst auf wenn man auf ein bild klickt.

die js-datei könnt ihr hier DOWNLOADEN

schon mal danke im voraus.

snowman 27.10.2003 14:56

www.mb-webdesign.at --> ich hoffe, du bist der designer und nicht der programmierer bei der firma. ;-)

gruss,
snowman

jak 27.10.2003 18:49

Ich glaube, der fehler liegt im Quelltext der Website:
function bewegEbenen()
bewegLayerX(aEbeneAktuell[i], iPosAktuell)

1.) Woher soll das Unterprogramm bewegEbenen() wissen was i ist?
2.) bewegLayerX ruft document.all[welche] auf, daher muss "welche" eine id sein.

Probier mal folgenden Code:
function bewegEbenen(id){
iPosAktuell = iPosAktuell - 1;
bewegLayerX(id, iPosAktuell);
...}
bewegEbenelinks(id)
{
oInterval = window.setInterval('bewegEbenen(id);',1);
}

im Link: onClick="bewegEbenelinks(this.id)"

Hoffe das funktioniert.

Jak

Pulse-Seeker 27.10.2003 19:49

@snowman

wieso? wo ist dein problem :confused:


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag