Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Kilkukrotne odpalenie funkcji
peja1990
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Witam, napisałem sobie funkcję slider'a.
  1. function vSlide(container) {
  2. ...
  3. }

Jako container zdefiniowałem id div'a.

Na stronie mam 2 slidery, dlatego też chciałbym ją odpalić 2 razy, oczywiście wartość container jest inna.

Mam dwa div'y sliderów:
  1. <div id="sponsors">
  2. <div id="partners">


Dlatego też odpalam funkcję:
  1. (function () {
  2. vSlide("sponsors");
  3. vSlide("partners");
  4. }());


W wyniku otrzymuję wykonanie funkcji raz w div'ie "sponsors", a raz w div'ie "partners".
Chciałbym by funkcja została wykonana dla obydwu div'ów.

Bardzo proszę Was o pomoc...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Pokaż ciało funkcji vSlide.

ps. jeżeli to autoslider to tak łatwo się nie da (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
peja1990
post
Post #3





Grupa: Zarejestrowani
Postów: 150
Pomógł: 1
Dołączył: 4.12.2010

Ostrzeżenie: (10%)
X----


Cytat(CuteOne @ 9.02.2012, 16:33:42 ) *
Pokaż ciało funkcji vSlide.

ps. jeżeli to autoslider to tak łatwo się nie da (IMG:style_emoticons/default/wink.gif)



  1. function vSlide(container, max, height) {
  2. $.ajax({
  3. type: "POST",
  4. url : container + ".html",
  5. load: function (XMLHttpRequest) {
  6. $("#" + container + " .slider").html("Trwa pobieranie danych&hellip;");
  7. },
  8. success: function(str) {
  9. var temp = new Array();
  10. temp = str.split("\n");
  11. var dir = "images/" + container + "/";
  12. var loaded = 0;
  13. var progress = (100 / temp.length);
  14. var objects = [];
  15. var preloader = null;
  16. var progressBar = null;
  17.  
  18. function startLoading() {
  19. preloader = document.createElement('div');
  20. preloader.id = 'preloader';
  21. progressBar = document.createElement('div');
  22. progressBar.id = 'progressBar';
  23. preloader.appendChild(progressBar);
  24. $(preloader).appendTo("#" + container + " .slider");
  25. var bw = $("#" + container + " .slider").width();
  26. var bh = $("#" + container + " .slider").height();
  27. var lw = $("#" + container + " .slider #preloader").width();
  28. var lh = $("#" + container + " .slider #preloader").height();
  29. $("#" + container + " .slider #preloader").css({
  30. 'margin-top' : (bh - lh) / 2 + "px",
  31. 'margin-left' : (bw - lw) / 2 + "px"
  32. });
  33. for(var x=0; x<temp.length; x++) {
  34. objects[x] = new Image();
  35. objects[x].onload = progressing;
  36. objects[x].src = dir + temp[x];
  37. }
  38. }
  39.  
  40. function progressing() {
  41. loaded++;
  42. progressBar.style.width = loaded * progress + "%";
  43. if(loaded >= temp.length) {
  44. slider();
  45. $("#" + container + " #preloader").remove();
  46. }
  47. }
  48. window.onload = startLoading;
  49. },
  50. error: function (XMLHttpRequest, textStatus, errorThrown) {
  51. $("#" + container + " .slider").html('Błąd ładowania danych !');
  52. }
  53. });
  54.  
  55. function slider() {
  56. var id = 0;
  57. var start = 1;
  58. var stop = 0;
  59. var active = 1;
  60. $.ajax({
  61. type: "POST",
  62. url : container + ".html",
  63. load: function (XMLHttpRequest) {
  64. $("#" + container + " .slider").html("Trwa pobieranie danych&hellip;");
  65. },
  66. success: function(str) {
  67. var mV = 15;
  68. var mH = 10;
  69. var temp = new Array();
  70. var dir = "images/" + container + "/";
  71. var bs = ($("#" + container + " .slider").width() / max) - (mH * 2);
  72. temp = str.split("\n");
  73. for(var i=0; i<temp.length; i++) {
  74. id += 1;
  75. stop += 1;
  76. var block = document.createElement("span");
  77. block.setAttribute('id', id);
  78. block.setAttribute('style', 'width:' + bs + 'px; height:' + height + 'px; margin:0 ' + mH + 'px');
  79. $(block).appendTo("#" + container + " .slider");
  80. var img = document.createElement("img");
  81. img.setAttribute('src', dir + temp[i]);
  82. img.setAttribute('style', 'max-width:' + bs + 'px; max-height:' + height + 'px');
  83. $(img).appendTo("#" + id);
  84. $("#" + container + " .slider").css({
  85. 'margin-top' : mV + "px",
  86. 'margin-bottom' : mV + "px"
  87. });
  88. var ah = $("#" + container + " .action").height();
  89. $("#" + container + " .action").css({
  90. 'margin-top' : ((height - ah) / 2) + mV + "px",
  91. 'margin-bottom' : ((height - ah) / 2) + mV + "px"
  92. });
  93. var bw = $("#" + container + " .slider span#" + id).width();
  94. var bh = $("#" + container + " .slider span#" + id).height();
  95. var iw = $("#" + container + " .slider span#" + id).children().width();
  96. var ih = $("#" + container + " .slider span#" + id).children().height();
  97. $("#" + container + " .slider span#" + id).children().css({
  98. 'margin-top' : (bh - ih) / 2 + "px",
  99. 'margin-left' : (bw - iw) / 2 + "px"
  100. });
  101. if($("#" + container + " .slider span#" + id).attr("id") <= max) {
  102. $("#" + container + " .slider span#" + id).fadeIn();
  103. } else {
  104. $("#" + container + " .slider span#" + id).hide();
  105. }
  106. }
  107. },
  108. error: function (XMLHttpRequest, textStatus, errorThrown) {
  109. $("#" + container + " .slider").html('Błąd ładowania danych !');
  110. }
  111. });
  112.  
  113. function slide() {
  114. $("#" + container + " .slider span").each(function() {
  115. if($(this).attr("id") >= active && $(this).attr("id") <= max) {
  116. $(this).fadeIn();
  117. } else {
  118. $(this).hide();
  119. }
  120. });
  121. };
  122.  
  123. $("#" + container + " .action.prev").click(function() {
  124. if(document.getElementById(start).style.display == "none") {
  125. active -= 1;
  126. max -= 1;
  127. slide();
  128. }
  129. });
  130.  
  131. $("#" + container + " .action.next").click(function() {
  132. if(document.getElementById(stop).style.display == "none") {
  133. active += 1;
  134. max += 1;
  135. slide();
  136. }
  137. });
  138. }
  139. }


Dodałem dwie zmienne do funkcji tj. max i height, a więc teraz wywołuję funkcję w taki sposób:

  1. (function () {
  2. vSlide("sponsors", 4, 75);
  3. vSlide("partners", 5, 50);
  4. }());


Pomyślałem trochę nad tym i sądzę, że problem może tkwić w zmiennej id, próbowałem jednak ze zmienną globalną:
  1. id = 0;

jednak nie przyniosło to oczekiwanego rezultatu...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 05:58