Guest User

Untitled

a guest
Jan 23rd, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. ;(function () {
  2.  
  3. // берем индекс из массива. при нажатии на кнопку хранимый индекс картинки
  4. // увеличивается на единицу, а left увеличивается на цифру из массива по этому индексу.
  5. // что-то типо псевдокода
  6. // if жмакнули на кнопку
  7. // мы получили список картинок class = "listImg"
  8. // i индекс массива увеличился на 1
  9. // left увеличивается на ширину картинки (что есть i-й элемент массива list)
  10.  
  11. // данная функция добавляет в себя необходимые компоненты вроде кнопок и тд.
  12. // слово this делает все остальное тело функции контекстом (если я правильно понимаю)
  13. var slider = function() {
  14. var index = 1;
  15. this.btns = document.querySelectorAll ( ".btn" ); // кнопки
  16. this.box = document.querySelector ( ".slider" ); // div контейнер в котором хранится div, который в свою очередь хранит картинки
  17. this.slidesBox = document.querySelector ( ".listImg" ); // div, который в свою очередь хранит картинки
  18. this.slides = document.querySelectorAll ( ".slide" ); // картинки
  19.  
  20. this.widthList = setImgWidth(); // поскольку функцию setImgWidth добавили в slider, то можно ее здесь запустить,
  21. // чтобы позже результат ее взять для slider.next или slider.prev
  22. }
  23. // предыдущую функцию немного переделал и тоже закинул в slider
  24. slider.setImgWidth = function () {
  25. //получаем все картинки в нужном блоке
  26. var img = this.slidesBox;
  27. var list = [];
  28. //добавляем в массив ширину картинок
  29. for (var i = 0; i < img.length; i++) {
  30. var width = img[i].clientWidth;
  31. list.push(width);
  32. }
  33. return list;
  34. }
  35. // добавляем новую функцию к функции slaider. Она добавляет обработчик нажатия кнопок
  36. slider.indexPosition = function (){
  37. var max = this.btns.length; //количество кнопок
  38.  
  39. for (var i = 0; i < max; i++) {
  40. this.btns[i].addEventListener ( "click", slider[this.btns[i].id].bind(null, this)); // Вот здесь сложная для меня херня, нашел в интернете.
  41. // повесили обработчик, засунули его в функцию слайдер и при помощи bind
  42. } // добавили доступ slider.prev и slider.next к объектам this в функции slider
  43. }
  44. // здесь обрабатываются нажатия на кнопки
  45. // в функцию slider добавляются еще две новые функции
  46. slider.prev = function() {
  47. /*var img = this.slidesBox;
  48. for ( index < img.length; index++ ) {
  49. slidesBox.style.left = +this.widthList[index] + "px";
  50. break;
  51. }*/
  52. }
  53.  
  54. slider.next = function() {
  55. // было принято решение сделать цикл, который берет значение переменной index
  56. // увеличивает его на едbницу, вместе с тем передвигает одну картинку на величину,
  57. // равную ширине картинки. после этого цикл прекращает работу. при этом index хранит
  58. // в себе увеличенное значение
  59.  
  60. var img = this.slidesBox;
  61. for ( index < img.length; index++ ) {
  62. slidesBox.style.left = -this.widthList[index] + "px";
  63. break;
  64. }
  65. }
  66. })();
Add Comment
Please, Sign In to add comment