[ Príspevkov: 8 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.08.09
Prihlásený: 14.12.17
Príspevky: 14
Témy: 5 | 5
NapísalOffline : 16.02.2011 21:28 | Uprava javascriptu

Zdravim riesim mensi problem v JS.

mam kod v html :

Kód:
<div id="_ctl0_Fmenu_PriceListByTypes" class="TableCss">
   <div  class="HeaderCss" align="left">
      <a href="..." id="PriceListByTypesFullLink">Kategória&nbsp;»</a>
   </div>
   <ul class="PLHidsMenu">
      <li  class="PL1"><span>...</span></li>
      <li  class="PL2"><a href="" title=""></a></li>
      <li  class="PL2"><a href="" title=""></a></li>
   </ul>   
</div>


a k tomu JS :

Kód:
function SDMenu(id) {
   if (!document.getElementById || !document.getElementsByTagName)
      return false;
   this.menu = document.getElementById(id);
   this.submenus = this.menu.getElementsByTagName("div");
   this.remember = true;
   this.speed = 3;
   this.markCurrent = true;
   this.oneSmOnly = false;
}
SDMenu.prototype.init = function() {
   var mainInstance = this;
   for (var i = 0; i < this.submenus.length; i++)
      this.submenus[i].getElementsByTagName("span")[0].onclick = function() {
         mainInstance.toggleMenu(this.parentNode);
      };
   if (this.markCurrent) {
      var links = this.menu.getElementsByTagName("a");
      for (var i = 0; i < links.length; i++)
         if (links[i].href == document.location.href) {
            links[i].className = "current";
            break;
         }
   }
   if (this.remember) {
      var regex = new RegExp("sdmenu_" + encodeURIComponent(this.menu.id) + "=([01]+)");
      var match = regex.exec(document.cookie);
      if (match) {
         var states = match[1].split("");
         for (var i = 0; i < states.length; i++)
            this.submenus[i].className = (states[i] == 0 ? "collapsed" : "");
      }
   }
};
SDMenu.prototype.toggleMenu = function(submenu) {
   if (submenu.className == "collapsed")
      this.expandMenu(submenu);
   else
      this.collapseMenu(submenu);
};
SDMenu.prototype.expandMenu = function(submenu) {
   var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
   var links = submenu.getElementsByTagName("a");
   for (var i = 0; i < links.length; i++)
      fullHeight += links[i].offsetHeight;
   var moveBy = Math.round(this.speed * links.length);
   
   var mainInstance = this;
   var intId = setInterval(function() {
      var curHeight = submenu.offsetHeight;
      var newHeight = curHeight + moveBy;
      if (newHeight < fullHeight)
         submenu.style.height = newHeight + "px";
      else {
         clearInterval(intId);
         submenu.style.height = "";
         submenu.className = "";
         mainInstance.memorize();
      }
   }, 30);
   this.collapseOthers(submenu);
};
SDMenu.prototype.collapseMenu = function(submenu) {
   var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
   var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
   var mainInstance = this;
   var intId = setInterval(function() {
      var curHeight = submenu.offsetHeight;
      var newHeight = curHeight - moveBy;
      if (newHeight > minHeight)
         submenu.style.height = newHeight + "px";
      else {
         clearInterval(intId);
         submenu.style.height = "";
         submenu.className = "collapsed";
         mainInstance.memorize();
      }
   }, 30);
};
SDMenu.prototype.collapseOthers = function(submenu) {
   if (this.oneSmOnly) {
      for (var i = 0; i < this.submenus.length; i++)
         if (this.submenus[i] != submenu && this.submenus[i].className != "collapsed")
            this.collapseMenu(this.submenus[i]);
   }
};
SDMenu.prototype.expandAll = function() {
   var oldOneSmOnly = this.oneSmOnly;
   this.oneSmOnly = false;
   for (var i = 0; i < this.submenus.length; i++)
      if (this.submenus[i].className == "collapsed")
         this.expandMenu(this.submenus[i]);
   this.oneSmOnly = oldOneSmOnly;
};
SDMenu.prototype.collapseAll = function() {
   for (var i = 0; i < this.submenus.length; i++)
      if (this.submenus[i].className != "collapsed")
         this.collapseMenu(this.submenus[i]);
};
SDMenu.prototype.memorize = function() {
   if (this.remember) {
      var states = new Array();
      for (var i = 0; i < this.submenus.length; i++)
         states.push(this.submenus[i].className == "collapsed" ? 0 : 1);
      var d = new Date();
      d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000));
      document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";
   }
};



no nechce mi to fungovat... problem je aj v tom, ze ten HTML kod sa menit nemoze...

prosim poradte... dik...


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0 | 0
NapísalOffline : 17.02.2011 17:31 | Uprava javascriptu

"Nechce mi to fungovať" nie je vysvetlenie problému, takže ak chceš, aby ti niekto poradil, budeš musieť napísať, čo to má robiť a čo to robí teraz a ideálny by bol aj odkaz na živú ukážku.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.08.09
Prihlásený: 14.12.17
Príspevky: 14
Témy: 5 | 5
Napísal autor témyOffline : 17.02.2011 21:37 | Uprava javascriptu

trocha som to prerobil... takto to vyzera... nejdu mi tie jednotlive kategorie rozkliknut...


Kód:
http://expertcomp.sk/menu.html


Offline

Čestný člen
Čestný člen
Uprava javascriptu

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5403
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 17.02.2011 21:59 | Uprava javascriptu

Nejdú? Podľa mňa ti idú, až moc ti idú.
Čo podľa teba robí tento kód?
Kód:
$('.PL1').click(function () {
$('ul li.PL2').slideToggle('medium');
});


Poradím ti - myslíš, že sa otvorí len tá druhá úroveň, ktorá patrí tej prvej, na ktorú si klikol? Alebo sa rozbalia všetky položky druhej úrovne?
Keď odpovieš na tieto otázky a zistíš, kde robíš chybu, tak by som na tvojom mieste začal tým, že by som položky druhej úrovne "vnoril" do položiek prvej úrovne. Čiže <li> prvej úrovne bude v sebe obsahovať celý zoznam <ul> druhej úrovne. Chápeš?


_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.08.09
Prihlásený: 14.12.17
Príspevky: 14
Témy: 5 | 5
Napísal autor témyOffline : 17.02.2011 22:21 | Uprava javascriptu

shaggy chapem, ale problem je v tom ze ten HTML kod je pevne dany a nedokaze sa zmenit... ak by sa dal zmenit uz davno to spravim to mi ver...


Offline

Čestný člen
Čestný člen
Uprava javascriptu

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5403
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 17.02.2011 22:48 | Uprava javascriptu

Tak si odmysli tú poslednú vetu môjho príspevku - stále platí, že rozbaľuješ všetky položky druhej úrovne. V tomto prípade budeš musieť roztvárať nasledujúceho "súrodenca", ktorý má class PL2.


_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.08.09
Prihlásený: 14.12.17
Príspevky: 14
Témy: 5 | 5
Napísal autor témyOffline : 18.02.2011 4:41 | Uprava javascriptu

no tak to uplne nechapem... v scripte som snad upravoval a skusal vsetko... no nic i tak dik...


Offline

Čestný člen
Čestný člen
Uprava javascriptu

Registrovaný: 21.02.06
Prihlásený: 08.12.14
Príspevky: 5403
Témy: 30 | 30
Bydlisko: Bratislava
NapísalOffline : 18.02.2011 15:13 | Uprava javascriptu

Ani by to nefungovalo, zle som si pozrel tvoj kód - ty vieš "rozbaliť" nasledujúce LI s class PL2, ale neviem si predstaviť, ako by si rozbalil tie ďalšie. Proste je to zle napísaný html kód a kým ho nezmeníš, nič s tým neurobíš. Netuším, prečo ho nemôžeš meniť, ale je to jediná možnosť.


_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
 [ Príspevkov: 8 ] 


Uprava javascriptu



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Uprava JavaScriptu ....

v Frontend

4

770

22.01.2011 10:46

DeeJay3

V tomto fóre nie sú ďalšie neprečítané témy.

Podpora Javascriptu

v Frontend

2

1075

06.03.2007 17:39

mokus

V tomto fóre nie sú ďalšie neprečítané témy.

blokovanie javascriptu

v Frontend

8

1115

12.02.2009 8:38

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

Vyuka Javascriptu

v Frontend

4

817

07.04.2009 16:01

juho

V tomto fóre nie sú ďalšie neprečítané témy.

Spustenie javascriptu z URL

v Frontend

2

712

11.08.2009 23:00

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

Blokovnie IP pomocou javascriptu - Chyba

v Frontend

11

950

22.10.2011 10:33

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Údaje z Javascriptu na server

v Frontend

1

519

27.07.2016 12:49

BX

V tomto fóre nie sú ďalšie neprečítané témy.

<title> pomocou javascriptu

v Frontend

8

911

10.10.2007 19:02

zero0x

V tomto fóre nie sú ďalšie neprečítané témy.

Select a option pomocou JavaScriptu

v Frontend

8

754

28.12.2008 23:12

blackman545

V tomto fóre nie sú ďalšie neprečítané témy.

zapis do txt suboru pomocou javascriptu

v Frontend

11

841

22.01.2015 23:15

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

načitanie dát z databazy do javascriptu

v Frontend

15

1043

05.09.2011 21:20

Pablo Montero

V tomto fóre nie sú ďalšie neprečítané témy.

prehladávač mi obmedzil zobrazovanie obsahu javascriptu

v Frontend

14

1043

22.01.2007 17:03

imnotwhafo

V tomto fóre nie sú ďalšie neprečítané témy.

php script na zistenie zapnutia javascriptu

v Backend

18

1920

10.07.2008 9:56

GoodWill

V tomto fóre nie sú ďalšie neprečítané témy.

Viete, prečo vás bolí hlava z javascriptu?

v Frontend

2

1588

16.04.2011 19:06

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Dart 1.0, alternatíva JavaScriptu, pripravený pre vývojárov

v Novinky

2

472

20.11.2013 7:55

Johnnny

V tomto fóre nie sú ďalšie neprečítané témy.

Stane sa nový programovací jazyk Dart náhradou JavaScriptu?

v Novinky

5

715

21.10.2011 15:46

1daemon1



© 2005 - 2026 PCforum, edited by JanoF