Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывести данные слайдера (https://javascript.ru/forum/misc/45052-vyvesti-dannye-slajjdera.html)

SNEG 12.02.2014 14:27

Вывести данные слайдера
 
Друзья, срочно требуется помощь. Вот несколько дней бьюсь над одной проблемой. Есть три слайдера, пробывал два варианта отсюда http://egorkhmelev.github.io/jslider/
и от сюда http://ionden.com/a/plugins/ion.rangeSlider/ . Вообщем сами они вроде работают.

Пример:
<div class="layout-slider">
<input id="CPUslider" type="slider" name="price" value="1" />
</div>
<script type="text/javascript">

      jQuery("#CPUslider").slider({ from: 1, to: 20, step: 1, round: 1, scale: [1, '|', 5, '|' , '10', '|', 15, '|', 20], skin: "round_plastic"});
   
</script>


<div>Общая цена</div>
<div id="totalprice"></div>
<script type="text/javascript">

  var vdscpuprice = $("#CPUslider").slider("value");
  document.getElementById('totalprice').innerHTML = vdscpuprice;

</script>


Необходимо получить текущее значение от слайдера, и передать в общую цену, кодом что вверху он берет значение при подгрузке страницы. Вданном случае 1. и если значение слайдера меняется, не подгружает его. если сделать таким образом:
в сам слайдер прописать:
onstatechange: function( value ){
    	var vdscpuprice = $("#CPUslider").val();
  	document.getElementById('totalprice').innerHTML = vdscpuprice;
  }

то выводит как нужно, НО! мне нужны суммировать значение трех слайдеров. Каким образом можно получить эти данные. Так же пробывал получить данные с input не получалось.
Заранее спасибо.

P.S.Сама задача, сделать три ползунка с определенными range , у каждого по значению высчитать сумму, в конце суммировать суммы трех слайдеров. Если есть решения купил бы.

рони 12.02.2014 14:58

SNEG, не судьба сделать три переменные и их суммировать :-?
var sum = [0,0,0]
onstatechange: function( value ){
sum[0]=+value
document.getElementById('totalprice').innerHTML = sum[0]+sum[1]+sum[2]
}

SNEG 12.02.2014 15:07

Возможно и судьба,извиняюсь попробую внятней обьяснить:

<div class="layout-slider">
  <input id="CPUslider" type="slider" name="price" value="1" /></br>
  <input id="RAMslider" type="slider" name="price" value="1" /></br>
  <input id="HDDslider" type="slider" name="price" value="1" />
</div>
    <script type="text/javascript">
      jQuery("#CPUslider").slider({ from: 1, to: 20, step: 1, round: 1, scale: [1, '|', 5, '|' , '10', '|', 15, '|', 20], skin: "round_plastic"});
      jQuery("#RAMslider").slider({ from: 1, to: 16, step: 1, round: 1, scale: [1, '|', 4, '|' , '8', '|', 12, '|', 16], skin: "round_plastic"});
	  jQuery("#HDDslider").slider({ from: 1, to: 100, step: 1, round: 1, scale: [1, '|', 10, '|' , 20, '|', 30, '|', 40, '|', '50', '|', 60, '|', 70, '|', 80, '|', 90, '|', 100], skin: "round_plastic"});
    </script>
<div>Общая цена</div>
<div id="totalprice"></div>
<script type="text/javascript">
     var vdscpuprice = $("#CPUslider").slider("value");
     var vdsramprice = $("#RAMslider").slider("value");
     var vdshddprice = $("#HDDslider").slider("value");
     document.getElementById('totalprice').innerHTML = (vdscpuprice + vdsramprice + vdshddprice);
</script>


Эта структура работает почти-что как надо за исключением того что значения vdscpuprice + vdsramprice + vdshddprice - изначальные, на которых подгружается страница и при изменении ползунка значения не меняются, меняются только у самого ползунка. Есть ли возможность как то их брать из текущих значений ползунка? тоесть если ползунок подвинули один из трех, автоматически значение поменялось и в 'totalprice".
Я так понимаю прописывать document.getElementById('totalprice').innerHTML = sum[0]+sum[1]+sum[2] нужно вне onstatechange? а var sum = [0,0,0] перед слайдерами?

рони 12.02.2014 15:47

Цитата:

Сообщение от SNEG
Я так понимаю прописывать document.getElementById('totalprice').innerHTML = sum[0]+sum[1]+sum[2] нужно вне onstatechange? а var sum = [0,0,0] перед слайдерами?

да

SNEG 12.02.2014 17:51

Сделал, получилось:
<div class="layout-slider">
  <input id="CPUslider" type="slider" name="price" value="1" /></br>
  <input id="RAMslider" type="slider" name="price" value="1" /></br>
  <input id="HDDslider" type="slider" name="price" value="1" />
</div>
    <script type="text/javascript">
      var vdscpu = 0;
      var vdsram = 0;
      var vdshdd = 0;
      jQuery("#CPUslider").slider({ from: 1, to: 20, step: 1, round: 1, scale: [1, '|', 5, '|' , '10', '|', 15, '|', 20], skin: "round_plastic",
        onstatechange: function( value ){
        vdscpu = value}
      });
      jQuery("#RAMslider").slider({ from: 1, to: 16, step: 1, round: 1, scale: [1, '|', 4, '|' , '8', '|', 12, '|', 16], skin: "round_plastic",
        onstatechange: function( value ){
        vdsram = value}
      });
	    jQuery("#HDDslider").slider({ from: 1, to: 100, step: 1, round: 1, scale: [1, '|', 10, '|' , 20, '|', 30, '|', 40, '|', '50', '|', 60, '|', 70, '|', 80, '|', 90, '|', 100], skin: "round_plastic",
        onstatechange: function( value ){
        vdshdd = value}
      });
    </script>
<div>Общая цена</div>
<div id="totalprice"></div>
<script type="text/javascript">
     var vdscpuprice = vdscpu;
     var vdsramprice = vdsram;
     var vdshddprice = vdshdd;
     document.getElementById('totalprice').innerHTML = (vdscpu + vdsram + vdshdd );
</script>


Но опять выводит только первые данные, при изменении данных на ползунке никаких изменений(

рони 12.02.2014 18:22

SNEG,
ну ёклмн строка 29 должна быть ещё в 13, 17, 21 -- иначе как вывод то данных сработает.

SNEG 12.02.2014 18:49

Рони спасибо огромное за внимание, но если вставляю эту строчку к примеру
<script type="text/javascript">
      var vdscpu = 0;
      var vdsram = 0;
      var vdshdd = 0;

      jQuery("#CPUslider").slider({ from: 1, to: 20, step: 1, round: 1, scale: [1, '|', 5, '|' , '10', '|', 15, '|', 20], skin: "round_plastic",
        onstatechange: function( value ){
        vdscpu=value;
        document.getElementById('totalprice').innerHTML = vdscpu;
      }
      });
      jQuery("#RAMslider").slider({ from: 1, to: 16, step: 1, round: 1, scale: [1, '|', 4, '|' , '8', '|', 12, '|', 16], skin: "round_plastic",
        onstatechange: function( value ){
        vdsram=value;
        document.getElementById('totalprice').innerHTML = vdsram;
      }
      });
	    jQuery("#HDDslider").slider({ from: 1, to: 100, step: 1, round: 1, scale: [1, '|', 10, '|' , 20, '|', 30, '|', 40, '|', '50', '|', 60, '|', 70, '|', 80, '|', 90, '|', 100], skin: "round_plastic",
        onstatechange: function( value ){
        vdshdd=value
        document.getElementById('totalprice').innerHTML = vdshdd;
      }
      });
    </script>


вместо


Вроде думаешь чего такого передать в переменную. Весь интернет перерыл с запросами get value from input, get value from range и т.д. и т.п.((( и не получается.

рони 12.02.2014 19:31

SNEG,
НЕНАДО обращаться к тому чего нет -- либо ставите скрипт после <div id="totalprice"></div>
либо в любое место но после готовности страницы
$(window).load(function ()
{
      var vdscpu = 0;
      var vdsram = 0;
      var vdshdd = 0;
      document.getElementById('totalprice').innerHTML = (vdscpu + vdsram + vdshdd );
      $("#CPUslider").slider({ from: 1, to: 20, step: 1, round: 1, scale: [1, '|', 5, '|' , 10, '|', 15, '|', 20], skin: "round_plastic",
        onstatechange: function( value ){
        vdscpu = +value;
        document.getElementById('totalprice').innerHTML = (vdscpu + vdsram + vdshdd );
        }
      });
      $("#RAMslider").slider({ from: 1, to: 16, step: 1, round: 1, scale: [1, '|', 4, '|' , 8, '|', 12, '|', 16], skin: "round_plastic",
        onstatechange: function( value ){
          vdsram = +value
          document.getElementById('totalprice').innerHTML = (vdscpu + vdsram + vdshdd );
        }
      });
	    $("#HDDslider").slider({ from: 1, to: 100, step: 1, round: 1, scale: [1, '|', 10, '|' , 20, '|', 30, '|', 40, '|', 50, '|', 60, '|', 70, '|', 80, '|', 90, '|', 100], skin: "round_plastic",
        onstatechange: function( value ){
          vdshdd = +value
          document.getElementById('totalprice').innerHTML = (vdscpu + vdsram + vdshdd );
        }
      });
      })

SNEG 12.02.2014 19:35

Огромнейшее спасибо!!!!)))):dance:

рони 12.02.2014 19:39

SNEG, на всякий
да у вас там с 1 отсчёт
var vdscpu = 0;
      var vdsram = 0;
      var vdshdd = 0;
:)


Часовой пояс GMT +3, время: 04:52.