ďťż

[JS] Menu w DHTML

       

Podstrony


telcocafe

Stworzyłem menu w DHTMLu na podstwaie Eksperta+. Na moim lokalnym serwerze (krasnal) wszystko działa normalnie. Po wrzuceniu na serwer menu nie chce się rozwijać. Pod IE wykakuje mi następujący błąd:
Brak definicji 'menu' w wierszu 87.

Oto kod buduj_menu.js
//---------- menu poziome -------------- //menu strona - poziom_2 - ksieg go¶ci MG_ksiega=new TPodMenu(1,'PodMenu',true); MG_ksiega.DodajElement(new TElement('Lista wpisów','ksiega/index.php?pokaz=lista','',null)); MG_ksiega.DodajElement(new TElement('Dodaj wpis','ksiega/index.php?pokaz=dodaj','',null)); MG_ksiega.Pokaz(0,0,2,'none'); //menu strona - pionowe MG_strona=new TPodMenu(1,'PodMenu',true); MG_strona.DodajElement(new TElement('Strona główna','start.php?id=news','',null)); MG_strona.DodajElement(new TElement('Kontakt','start.php?id=kontakt','',null)); MG_strona.DodajElement(new TElement('Księga go¶ci','#','',MG_ksiega)); MG_strona.DodajElement(new TElement('Forum','start.php?id=forum','',null)); MG_strona.DodajElement(new TElement('Autor','start.php?id=autor','',null)); MG_strona.Pokaz(0,0,1,'none'); //menu fizycy - poziom2 - starożytni MG_fizycy_s=new TPodMenu(1,'PodMenu',true); MG_fizycy_s.DodajElement(new TElement('Archimedes','start.php?id=fizycy_archimedes','',null)); MG_fizycy_s.Pokaz(0,0,2,'none'); //menu fizycy - poziom2 - nowożytni MG_fizycy_n=new TPodMenu(1,'PodMenu',true); MG_fizycy_n.DodajElement(new TElement('Pascal','start.php?id=fizycy_pascal','',null)); MG_fizycy_n.DodajElement(new TElement('Torricelli','start.php?id=fizycy_torricelli','',null)); MG_fizycy_n.Pokaz(0,0,2,'none'); //menu fizycy - pionowe MG_fizycy=new TPodMenu(1,'PodMenu',true); MG_fizycy.DodajElement(new TElement('Starożytni','#','',MG_fizycy_s)); MG_fizycy.DodajElement(new TElement('Nowożytni','#','',MG_fizycy_n)); MG_fizycy.Pokaz(0,0,1,'none'); //menu zadania - pionowe MG_zadania=new TPodMenu(1,'PodMenu',true); MG_zadania.DodajElement(new TElement('Ci¶nienie','start.php?id=zadania_cisnienie','',null)); MG_zadania.Pokaz(0,0,1,'none') //menu kalkulator - pionowe MG_kalkulator=new TPodMenu(1,'PodMenu',true); MG_kalkulator.DodajElement(new TElement('Ciężar','start.php?id=kalkulator_ciezar','',null)); MG_kalkulator.DodajElement(new TElement('Gęsto¶ć','start.php?id=kalkulator_gestosc','',null)); MG_kalkulator.Pokaz(0,0,1,'none') MG=new TPodMenu(0,'GlowneMenu',false); MG.DodajElement(new TElement('Strona','#','',MG_strona)); MG.DodajElement(new TElement('Sławni Fizycy','#','',MG_fizycy)); MG.DodajElement(new TElement('Zbiór zadań','#','',MG_zadania)); MG.DodajElement(new TElement('Kalkulator','#','',MG_kalkulator)); //------- tworzymy menu ---------- Menu.Rejestruj(MG); Menu.Rejestruj(MG_strona); Menu.Rejestruj(MG_fizycy); Menu.Rejestruj(MG_zadania); Menu.Rejestruj(MG_kalkulator); Menu.Rejestruj(MG_fizycy_s); Menu.Rejestruj(MG_fizycy_n); Menu.Rejestruj(MG_ksiega);

Adres strony: http://fizyk.ovh.org

Proszę o pomoc w poprawieniu kodu.

Pozdrawiam Webmaster214



Mieszałeś coś w pliku menu.js ? Jeśli tak to daj kod :)
Użytkownik Walus2005 edytował ten post 19 czerwiec 2006, 21:13
Menu.js
/* MENU v1.0 ------------- Autor: Karol Wierzchołowski mailto: karol@wierzcholowski.net www: [url="http://binboy.org"]http://binboy.org[/url] */ /* -------------------------------------------------------------------------- */ var KatalogIMG = 'img/'; //katalog z rysunkami var KolorTlaAktywny = '#FEF9CF'; //kolor tła pod¶wietlanego elementu var KolorAktywny = '#000000'; //kolor liter pod¶wietlanego elementu var KolorTlaNieAktywny = ''; //kolor tła nieaktywnego elementu var KolorNieAktywny = '#000000'; //kolor liter nieaktywnego elementu //je¶li nie używamy przegl±darki Internet Explorer... if (navigator.userAgent.toLowerCase().indexOf('msie')<0) { var BorderNieAktywny = '1px solid transparent'; //obramowanie gdy element jest nieaktywny var BorderAktywny = '1px solid green'; //obramowanie gdy element jest aktywny } else { var BorderNieAktywny = ''; var BorderAktywny = ''; } /* -------------------------------------------------------------------------- */ var Rozwiniete=null; // ostatnio rozwinięte menu var OstatnioWMenu=null; // menu z ostatnio wybranym elementem var OstatnioElement=null; // ostatnio wybrany element var timerID=0; /* -------------------------------------------------------------------------- */ var GloablID=0; function NowyID() { return (++GloablID); } /* -------------------------------------------------------------------------- */ //----------------- pobranie pozycji X elementu -------------------------------- function PozycjaX(o) { var lewa = 0; if (o.offsetParent) { while (o.offsetParent) { lewa += o.offsetLeft o = o.offsetParent; } } else if (o.x) lewa += o.x; return lewa; } //------------- pobranie pozycji Y elementu ------------------------------------ function PozycjaY(o) { var gora = 0; if (o.offsetParent) { while (o.offsetParent) { gora += o.offsetTop o = o.offsetParent; } } else if (o.y) gora += o.y; return gora; } //****************************************************************************** //****************************************************************************** //****************************************************************************** //-------------------- pod¶wietlenie elementu ---------------------------------- function TElementPodswietl() { //podswietlaj±c co¶... od¶wietlamy wszystko u rodzica this.Rodzic.OdznaczWszystko(); //znajdujemy ten element w hierarchii DOM var n=document.getElementById('MenuElement_'+this.Id); //zmieniamy style wybrane menu n.style.backgroundColor=KolorTlaAktywny; //zmieniamy jego kolor tła n.style.color=KolorAktywny; //zmieniamy jego kolor liter n.style.border=BorderAktywny; //zmieniamy jego ramkę } //------------ od¶wietlamy element --------------------------------------------- function TElementOdswietl() { //znajdujemy ten element w hierarchii DOM var n=document.getElementById('MenuElement_'+this.Id); //pobieramy "uchwyt" do tego elementu w hierarchii DOM //zmieniamy style n.style.backgroundColor=KolorTlaNieAktywny; //przywracamy kolor tla n.style.color=KolorNieAktywny; //przywracamy kolor liter n.style.border=BorderNieAktywny; //przywracamy obramowanie } //------------ element staje się aktywny --------------------------------------- function TElementAktywne() { var em=this.Rodzic; //menu rodzica //znajdujemy ten element w hierarchii DOM var n=document.getElementById('MenuElement_'+this.Id); //jak jaki¶ element staje się aktywny, to //wył±czamy stoper, który zamyka wszystkie menu clearTimeout(timerID); //w zmiennej Rozwiniete zapamietujemy zawsze numer ID ostatnio rozwiniętego menu //jesli wiec Rozwiniete!=null (co¶ się rozwinęło) oraz numer ID rozwiniętego menu //jest różne od numer ID menu, w którym jeste¶my - zamykamy ostatnio rozwinięte menu if (Rozwiniete && em.Id!=Rozwiniete.Id) { Rozwiniete.ZamknijMenu(); Rozwiniete=em; //teraz rozwinięte jest menu aktualne if (!em.Stan) //je¶li to menu główne... zamykamy i odznaczamy wszystko { Menu.ZamknijWszystkieMenu(); Menu.OdznaczWszystko(); } } //pod¶wietlamy element this.Podswietl(); //element jest w innym menu niż poprzednio... trzeba więc //w tym poprzednim menu zaznaczyć element aktywny, gdyż sam się odznaczył if (OstatnioWMenu && OstatnioWMenu.Id!=em.Id && em.Stan) { var m=Menu.ZnajdzElement(OstatnioElement); if (m) m.Podswietl(); } OstatnioElement=this.Id; OstatnioWMenu=em; //je¶li element, który jest aktywny, ma przypisane menu - rozwijamy je... if (this.Menu!=null) { //zapamiętujemy noworozwinięte menu Rozwiniete=this.Menu; //pobieramy "uchwyt" do tego menu w hierarchii DOM var m=document.getElementById('Menu_'+this.Menu.Id); //pobiramy współrzędne elementu, który jest aktywny var x=PozycjaX(n); var y=PozycjaY(n); //w zależno¶ci od tego, jakiego rodzaju jest to menu, zmieniamy trochę współrzędne if (em.Typ==1) //menu pionowe { x+=n.offsetWidth-15; //przesuwamy je o szeroko¶ć elementu które wybrali¶my y+=2; } else //menu poziome { y+=n.offsetHeight; //przesuwamy je o wysoko¶ć elementu, który wybrali¶my } //zmieniamy style menu, które wy¶wietlamy m.style.left=x+'px'; m.style.top=y+'px'; m.style.display="block"; } } //--------------- element przestaje być aktywny -------------------------------- function TElementNieAktywne() { //od¶wietlamy element this.Odswietl(); //uruchamiamy stoper... za 200 ms mamy zamkn±ć wszystkie menu, //chyba, że wybierze się nowy element... wtedy nie timerID = setTimeout("Menu.ZamknijWszystkieMenu()", 200); } //---------------- wy¶wietlenie elementu menu ---------------------------------- function TElementPokaz(Typ,Klasa) { if (Typ==1) m='V'; else m='H'; if (this.Ikona!='') ikona='<img border="0" src="'+KatalogIMG+this.Ikona+'" width="20" height="20" align="middle" />'; else ikona='<img border="0" src="'+KatalogIMG+'p.gif" width="20" height="20" align="middle" />'; if (Typ==1) ikona=ikona+'&nbsp;&nbsp;'; if (this.Menu!=null && Typ==1) t='<span style="position: relative;left:140px;"><img border="0" src="'+KatalogIMG+'tp.gif" align="right"/></span>'; else t=''; S='<a style="border: '+BorderNieAktywny+';"'+ ' id="MenuElement_'+this.Id+'" href="'+this.Adres+'"'+ ' class="'+Klasa+'Element'+m+'"'+ ' onmouseover="Menu.Aktywny('+this.Id+');" onmouseout="Menu.NieAktywny('+this.Id+');">'+ t+ikona+this.Tytul+ '&nbsp;</a>'; if (Typ==0) S=S+'&nbsp;'; document.write(S); } //-------- TElement - obiekty pojedynczych elementów menu -------- function TElement(tytul,adres,ikona,menu) { this.Id=NowyID(); //każdy element ma swój unikalny numer ID this.Tytul=tytul; //każdy element ma też swój tytuł this.Adres=adres; //adres odno¶nika this.Ikona=ikona; //ikonę this.Menu=menu; //może też mieć przypisane menu podrzędne this.Rodzic=null; //no i menu rodzica this.Aktywne=TElementAktywne; //element staje się aktywny this.NieAktywne=TElementNieAktywne; //element staje się nieaktywny this.Podswietl=TElementPodswietl; //pod¶wietlenie menu this.Odswietl=TElementOdswietl; //od¶wietlenie menu this.Pokaz=TElementPokaz; //wy¶wietlenie elementu } //****************************************************************************** //****************************************************************************** //****************************************************************************** //---------------------- zamykamy menu ----------------------------------------- function TPodMenuZamknijMenu() { //pobieramy "uchwyt" do tego menu w hierarchii DOM var n=document.getElementById('Menu_'+this.Id); //ukrywamy n.style.display="none"; //odznaczamy wszystko this.OdznaczWszystko(); //kasujemy numer ID rozwiniętego menu Rozwiniete=null; } //------------------- dodanie nowego elementu ---------------------------------- function TPodMenuDodajElement(e) { e.Rodzic=this; //zanim dodamy, zapamietujemy w nim rodzica this.Elementy.push(e); } //------------- wyswietlenie pojedynczego menu --------------------------------- function TPodMenuPokaz(x,y,z,disp) { document.write('<span id="Menu_'+this.Id+'" class="'+this.Klasa+'" style="top: '+y+'px; left: '+x+'px; z-index: '+z+';display: '+disp+'">'); for (var i=0;i<this.Elementy.length;i++) { var e=this.Elementy[i]; e.Pokaz(this.Typ,this.Klasa); } document.write('</span>'); } //------------- szukanie elementu w menu - po numerze id ----------------------- function TPodMenuZnajdzElement(id) { for (var i=0;i<this.Elementy.length;i++) if (this.Elementy[i].Id==id) return this.Elementy[i]; return null; } //------------- odznaczenie wszystkich elementów w tym menu -------------------- function TPodMenuOdznaczWszystko() { for (var i=0;i<this.Elementy.length;i++) this.Elementy[i].Odswietl(); } //------------- obiekt TPodMenu - to pojedyncze menu --------------------------- function TPodMenu(typ,klasa,stan) { this.Id=NowyID(); //każde menu ma swój numer ID this.Typ=typ; //typ menu - poziome/pionowe this.Stan=stan; //stan menu this.Klasa=klasa; //klasa menu (style CSS) this.Elementy=new Array(); //lista elementów menu this.DodajElement=TPodMenuDodajElement; //dodanie nowego elementu do menu this.ZnajdzElement=TPodMenuZnajdzElement; //szukanie elementu w menu (po numerze ID) this.OdznaczWszystko=TPodMenuOdznaczWszystko;//odznaczenie wszystkich elementów w tym menu this.ZamknijMenu=TPodMenuZamknijMenu; //zamknięcie tego menu this.Pokaz=TPodMenuPokaz; //wyswietlenie menu } //****************************************************************************** //****************************************************************************** //****************************************************************************** //------------- odznaczenie wszystkich elementów ------------------------------- function TMenuOdznaczWszystko() { for (var i=0;i<Menu.Lista.length;i++) Menu.Lista[i].OdznaczWszystko(); } //--------- rejestrowanie nowego menu ------------------------------------------ function TMenuRejestruj(e) { this.Lista.push(e); } //---------- szukanie elementu w zarejestrowanych menu ------------------------- function TMenuZnajdzElement(id) { for (var i=0;i<this.Lista.length;i++) { var el=this.Lista[i].ZnajdzElement(id); if (el!=null) return el; } return null; } //--------------- element przestaje być aktywny -------------------------------- function TMenuNieAktywny(id) { //parametr ID - to numer ID elementu, który przestaje być aktywny this.ZnajdzElement(id).NieAktywne(); } //--------------- menu staje się aktywne --------------------------------------- function TMenuAktywny(id) { //parametr ID - to numer ID elementu, który staje się aktywny this.ZnajdzElement(id).Aktywne(); } //---------- funkcja uruchamiana z opóÄ˝nieniem - ukrywa wszystkie menu --------- function TMenuZamknijWszystkieMenu() { for (var i=0;i<this.Lista.length;i++) { if (this.Lista[i].Stan) this.Lista[i].ZamknijMenu(); } this.OdznaczWszystko(); } //----------- klasa TMenu - zarz±dzanie menu ----------------------------------- function TMenu() { this.Lista=new Array(); // lista wszystkich menu this.Rejestruj=TMenuRejestruj; //rejestracja nowego menu this.ZnajdzElement=TMenuZnajdzElement; //znajdowanie elementu w menu (po numerze ID) this.OdznaczWszystko=TMenuOdznaczWszystko; //odznaczeniew szystkich opcji this.ZamknijWszystkieMenu=TMenuZamknijWszystkieMenu; //zamknięcie wszystkich menu this.Aktywny=TMenuAktywny; //element staje się aktywny this.NieAktywny=TMenuNieAktywny; //element przestaje być aktywny } //---------- tworzymy egzemplarz Menu ------------------------------------------ Menu = new TMenu();

Pozdrawiam Webmaster214

No musze przyznać, że niemam pojecia :blink: u mnie po skopiowaniu też wszystko działa i jest okej być może jest to wina arkuszu stylu 'menu.css' bo sam też tak kiedyś miałem ale niesądze skoro mówisz że u Ciebie działa. Możesz jeszcze sprawdzić czy niejest to wina serwera. Spróbuj założyć jakieś darmowe konto i wgrać na nie tą strone, sprawdzisz wtedy czy ten sam błąd pojawia sie na innych serwerach. Pozdrawiam :)
Użytkownik Walus2005 edytował ten post 20 czerwiec 2006, 20:33


Offtopic: A po co ci do HTML i JS Krasnal? Przecież to działa i bez serwera. Sprawdź bez serwera.

Proszę by ktoś przejżał ten kod. Wyjaśnię wszystko jeszcze raz.
Gdy uruchamiam stronke pod krasnalem u mnie na PC wszystko działa. Gdy wrzucę ją na darmowy serwer (60free.ovh.org) menu nie chce się rozwijać.

Adres strony: http://fizyk.ovh.org

Pozdrawiam Webmaster214

PS: Menu również nie działa na serwerze http://www.yoyo.pl.

Te menu chodzi rowniez bez pomocy krasnala :] mozesz normalnie je odpalić i sprawdzić. Swoją drogą masz linka do mojej strony> TUTAJ < ja tez zastosowalem te menu i działa mi bez zazutów :] Przeanalizuj kod mojego menu może Ci coś wpadnie w oko :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.