Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Proste menu - rownanie do prawej
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
sntObar
Witam wszystkich!

Mam problem z menu. Otoz chcialbym aby DIV ktory stanowi "czesc dynamiczna" menu, wyrownany byl do prawej strony przycisku (gdziekolwiek bylby umieszczony).

Oto kod:

  1. <script type="text/javascript">
  2.  
  3. function getposOffset(ch, t){
  4.  
  5. var totaloffset=(t=='top')? ch.offsetTop : ch.offsetLeft;
  6. var offParent=ch.offsetParent;
  7. while (offParent!=null){
  8. if(t=='left'){
  9. totaloffset=totaloffset+offParent.offsetLeft;
  10. } else {
  11. totaloffset=totaloffset+offParent.offsetTop;
  12. }
  13. offParent=offParent.offsetParent;
  14. }
  15. return totaloffset;
  16. }
  17.  
  18. function showMenu(ch, menu_id){
  19.  
  20. var menu_idv=document.getElementById(menu_id);
  21. var menu_idv3=document.getElementById(ch);
  22. if (menu_idv.style.display=='none'){
  23. menu_idv.style.left=getposOffset(ch, 'left')+"px"
  24. menu_idv.style.top=getposOffset(ch, 'top')+21+"px"
  25. menu_idv.style.display="block"
  26.  
  27. return false;
  28. } else {
  29. menu_idv.style.display="none"
  30. return false;
  31. }
  32. }
  33.  
  34. </script>
  35.  
  36. <table border="0" cellspacing="0" cellpadding="0" style="border: 1px solid black; background-color: white; width: 300px;">
  37. <tr>
  38. <td width="200"></td>
  39. <td width="100">
  40. <div id="aca" align="left" style="border: 2px solid #999999; background-color: white; width: 100px;" border="1">
  41. <a href="#" onClick="return showMenu(this, 'subcontent')">Otworz menu</a>
  42. </div>
  43. </td>
  44. </tr>
  45. </table>
  46.  
  47.  
  48. <div id="subcontent" style="width:120px;position:absolute; display:none">
  49. <div style="border: 1px solid black; background-color: white; width: 300px;padding:5px;">
  50. <a href="#">Link 1</a><br>
  51. <a href="#">Link 2</a><br>
  52. <a href="#">Link 3</a>
  53. </div>
  54. </div>



Mam nadzieje ze macie jakies pomysly smile.gif.
Z gory dzieki za pomoc i pozdrawiam!
revyag
Jak dla mnie to on jest wyrównany do prawej strony.
W tym momecie menu wygląda tak że jest ramka po której prawej stronie jest div, po kliknięciu na który otwiera się menu. To menu jest po prawej stronie, więc nie wiem o co chodzi smile.gif
Może napisz coś więcej o problemie.
sntObar
Mialem na mysli rownanie do "przycisku" je wywolujacego. Obecnie rowna do jego lewej strony (wiec jak widac menu wystaje z prawej strony poza przycisk), chcialbym aby bylo odwrotnie.

Czyli:



... a obecnie wyglada to tak:



Mam nadzieje ze udalo mi sie naswietlic problem smile.gif.
revyag
ta linijka kodu przesuwa Ci diva w prawo.
Kod
menu_idv.style.left=getposOffset(ch, 'left')+"px"
sntObar
Jestem juz maly kroczek do przodu, wiem ze nalezy posluzyc sie offsetWidth, jednak niemoge wywolac sprawdzenia menu o id "subcontent". Co ciekawsze menu o id "aca" sprawdza bez problemu...

Gdyby tylko ktos mogl mi powiedziec dlaczego tak sie dzieje smile.gif

Obecny kod:

  1. <script type="text/javascript">
  2.  
  3. function getposOffset(ch, t){
  4.  
  5. var totaloffset=(t=='top')? ch.offsetTop : ch.offsetLeft;
  6. var offParent=ch.offsetParent;
  7. while (offParent!=null){
  8. if(t=='left'){
  9. totaloffset=totaloffset+offParent.offsetLeft;
  10. } else {
  11. totaloffset=totaloffset+offParent.offsetTop;
  12. }
  13. offParent=offParent.offsetParent;
  14. }
  15. return totaloffset;
  16. }
  17.  
  18. function showMenu(ch, menu_id,button_id){
  19.  
  20. var menu_idv = document.getElementById(menu_id);
  21. var button_width = document.getElementById(button_id).offsetWidth;
  22. var menu_width = document.getElementById(menu_id).offsetWidth;
  23. if (menu_idv.style.display=='none'){
  24. menu_idv.style.left=getposOffset(ch, 'left')+"px"
  25. menu_idv.style.top=getposOffset(ch, 'top')+21+"px"
  26. menu_idv.style.display="block"
  27. alert(button_width);
  28. alert(menu_width);
  29. return false;
  30. } else {
  31. menu_idv.style.display="none"
  32. return false;
  33. }
  34. }
  35.  
  36.  
  37. <table border="0" cellspacing="0" cellpadding="0" style="border: 1px solid black; background-color: white; width: 300px;">
  38. <tr>
  39. <td width="200"></td>
  40. <td width="100">
  41. <div id="aca" align="left" style="border: 2px solid #999999; background-color: white; width: 101px;" border="1">
  42. <a href="#" onClick="return showMenu(this, 'subcontent','aca')">Otworz menu</a>
  43. </div>
  44. </td>
  45. </tr>
  46.  
  47.  
  48. <div id="subcontent" style="border: 1px solid black; background-color: white; width: 300px;padding:5px;position:absolute; display:none">
  49. <a href="#">Link 1</a><br>
  50. <a href="#">Link 2</a><br>
  51. <a href="#">Link 3</a>
  52. </div>
  53. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.