Как сохранить последнюю перетаскиваемую позицию ползунка диапазона даже на странице refre sh in javascript - PullRequest
3 голосов
/ 10 января 2020

У меня есть веб-страница, состоящая из ползунка диапазона, который имеет три значения 1,2,3 для каждого значения, которое будет изменяться в изображении, какая-то фраза теперь мое требование находится на странице refre sh ползунок диапазона установлен в тот, который мне не нужен, я хочу, чтобы он восстановил свою последнюю перетаскиваемую позицию вместе с изображением и фразой даже при обновлении страницы. Мой CSS код:

<style>
  .rangeslider {
    width: 50%;
    margin: 0 auto;
    position: absolute;
  }
  .myslider {
    -webkit-appearance: none;
    background: white;
    width: 100%;
    height: 20px;
    opacity: 0.8;
    margin-top: 180px;
  }
  .myslider::-webkit-slider-thumb {
    -webkit-appearance: none;
    cursor: pointer;
    background: #000080;
    width: 33%;
    height: 20px;
  }
  .myslider:hover {
    opacity: 1;
  }
  .image {
    position: relative;
    width: 400px;
    margin: 0 auto;
  }
  .image>img {
    position: absolute;
    display: none;
  }
  .image>img.visible,
  .image>img:first-child {
    display: block;
  }
  #sliderOutput>div {
    display: none;
  }
  #sliderOutput>div.visible,
  #sliderOutput>div:first-child {
    display: block;
  }
  </style>

Мой Html код:

image

Мой Js код:

window.onload = function()
{
  var imagePath = "../static/images/";
  var localStorageSliderNumber;
  var localStorageImagePath; 


  if (window.localStorage.getItem('sliderValue') != null) {
    localStorageSliderNumber = window.localStorage.getItem('sliderValue');
  } else {
    window.localStorage.setItem('sliderValue', '1');
    localStorageSliderNumber = 1;
  }
  if (window.localStorage.getItem('imagePath') != null) {
    imagePath = imagePath + window.localStorage.getItem('imagePath') + ".jpg";
  }
  var rangeslider = document.getElementById("sliderRange");
  var output = document.getElementById("sliderOutput");
  var images = document.getElementById("sliderImages");

  rangeslider.addEventListener('input', function() {
    for (var i = 0; i < output.children.length; i++) {
      output.children[i].style.display = 'none';
      images.children[i].style.display = 'none';
    }
    i = Number(this.value) - 1;
    output.children[i].style.display = 'block';
    images.children[i].style.display = 'block';
    window.localStorage.setItem('imagepath', rangeslider.getAttribute('value'));
    window.localStorage.setItem('sliderValue', (i+1));


});
}

Здесь я сохраняю значение в локальном хранилище, т.е. значение слайдера, но теперь я хочу сохранить последнюю перетаскиваемую позицию ползунка вместе с фразой и изображением

       [1]: https://codepen.io/lakshmi123__/pen/abzYeLP

1 Ответ

0 голосов
/ 10 января 2020

Здесь вы go.

Вам просто нужно также вызывать ваши методы установки при загрузке. То, что я сделал, я разделил общий код для отдельной установки данных и назвал его как при загрузке, так и при изменении значения. Вот обновленный код.

window.onload = function() {
  var imagePath = "../static/images/";
  var localStorageSliderNumber;
  var localStorageImagePath;
  if (window.localStorage.getItem('sliderValue') != null) {
    localStorageSliderNumber = window.localStorage.getItem('sliderValue');
  } else {
    window.localStorage.setItem('sliderValue', '1');
    localStorageSliderNumber = 1;
  }
  if (window.localStorage.getItem('imagePath') != null) {
    imagePath = imagePath + window.localStorage.getItem('imagePath') + ".jpg";
  }
  var rangeslider = document.getElementById("sliderRange");
  var output = document.getElementById("sliderOutput");
  var images = document.getElementById("sliderImages");
  rangeslider.value = localStorageSliderNumber;
  //The common line of code extracted into a method
  setData(rangeslider, output, images, localStorageSliderNumber);
  rangeslider.addEventListener('input', function() {
    //call the method once again
    setData(rangeslider, output, images, this.value);
  });
}

function setData(rangeslider, output, images, value) {
  for (var i = 0; i < output.children.length; i++) {
    output.children[i].style.display = 'none';
    images.children[i].style.display = 'none';
  }
  i = Number(value) - 1;

  output.children[i].style.display = 'block';
  images.children[i].style.display = 'block';
  window.localStorage.setItem('imagepath', rangeslider.getAttribute('value'));
  window.localStorage.setItem('sliderValue', (i + 1));
  window.localStorage.setItem('sliderPosition', (i + 1))
}

Вот Обновленная ручка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...