Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 25.09.2017, 14:50
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от рони Посмотреть сообщение
the_little,
да в slide и в change одно и тоже и строка 23
$( "#slider2" ).slider("option", "value", 24)
я кстати полез смотреть примеры этих слайдеров, нашел похожий на мой, с кодом примерно таким, как нужно, на сколько я понимаю.

Он подойдет для моих целей? Он получается еще короче. Он правда был под инпут, я его переписал под свой обычный див.

$( function() {
    $( "#slider2" ).slider({
      range: "min",
      value: 24,
      min: 1,
      max: 80,
      slide: function( event, ui ) 
      {
        $( "#contentSlider2" ).html( ui.value );
      }
    });
    	$( "#contentSlider2" ).html( $( "#slider2" ).slider( "value" ) );
});
Ответить с цитированием
  #12 (permalink)  
Старый 25.09.2017, 15:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от the_little
Он подойдет для моих целей?
вам решать
Ответить с цитированием
  #13 (permalink)  
Старый 25.09.2017, 15:09
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Если смотреть вариант, который я собрал под вашим руководством получается так. Переменную новую объявил, вывел, работает. Я сначала подумал что не работает, а он подцепляет значение когда ползунок отпускаешь. Пока кнопка мышки зажата - не подцепляет.

$(document).ready(function(){
    $( "#slider2" ).slider(
    {
	range: "min",
	value : 24,
	min : 1,
	max : 80,
	step : 1,
	slide: function( event, ui ) 
    	{
		$( "#contentSlider2" ).html( ui.value );
        },
    	        change: function( event, ui ) 
    	{
		$( "#contentSlider2" ).html( ui.value );
		
                srok = $( "#contentSlider2" ).html();
			calc_srok = parseInt(srok, 10);
			document.getElementById('calc-summ').innerHTML = calc_srok;

        }
    });
    $( "#slider2" ).slider("option", "value", 24);
});


СПАСИБО!
Сейчас проделаю то же самое со вторым слайдером и потом попробую где-то над двумя переменными поработать.

Последний раз редактировалось the_little, 25.09.2017 в 15:11.
Ответить с цитированием
  #14 (permalink)  
Старый 25.09.2017, 15:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от the_little
а он подцепляет значение когда ползунок отпускаешь. Пока кнопка мышки зажата - не подцепляет.

Сообщение от рони
в slide и в change одно и тоже
Ответить с цитированием
  #15 (permalink)  
Старый 25.09.2017, 15:29
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Создал переменные. привёл их к нужному виду.
Одни переменные задаются в первом слайдере.
Другие задаются во втором слайдере.
По отдельности работают как надо.

Но когда я их складываю, например во втором слайдере, то:
- при прокрутке второго слайдера все правильно работает.
- при прокрутке первого слайдера сумма двух переменных не меняется. При изменении положения второго слайдера - работает правильно.

Если я пытаюсь арифметические действия производить вне снайперов - то не работает...

Вот полный код скрипта в настоящий момент.

$(document).ready(function(){
	$( "#slider" ).slider({
		range: "min",
		value : 50000000,
		min : 100000,
		max : 100000000,
		step : 100000,
		slide: function( event, ui ) 
		{
			$( "#contentSlider" ).html(addSpaces(ui.value.toString()));
		},
		change: function( event, ui ) 
		{
			$( "#contentSlider" ).html(addSpaces(ui.value.toString()));
			
			summ = $( "#contentSlider" ).html();
			free_summ = summ.replace(/[^-0-9]/gim,'');
			calc_summ = free_summ / 1000000;
			document.getElementById('calc-market').innerHTML = calc_summ;
		}
	});
	$( "#slider" ).slider("option", "value", 50000000);
});

function addSpaces(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ' ' + '$2');
	}
	return x1 + x2;
}

$(document).ready(function(){
	$( "#slider2" ).slider(
	{
		range: "min",
		value : 24,
		min : 1,
		max : 80,
		step : 1,
		slide: function( event, ui ) 
		{
			$( "#contentSlider2" ).html( ui.value );
		},
		change: function( event, ui ) 
		{
			$( "#contentSlider2" ).html( ui.value );
			
			srok = $( "#contentSlider2" ).html();
			free_srok = parseInt(srok, 10);
			
			garant_summ = calc_summ + free_srok;
			document.getElementById('calc-summ').innerHTML = garant_summ;
		}
	});
	$( "#slider2" ).slider("option", "value", 24);
});
Ответить с цитированием
  #16 (permalink)  
Старый 25.09.2017, 15:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

the_little,
html покажите
Ответить с цитированием
  #17 (permalink)  
Старый 25.09.2017, 16:15
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Сообщение от рони Посмотреть сообщение
the_little,
html покажите
<div class="landing-raschet-left-block">
	<h2>Рассчитайте стоимость прямо сейчас</h2>
	<div class="landing-raschet-summa">
		<div class="landing-raschet-summa-text">Сумма гарантии</div>
		<div class="landing-raschet-summa-number">
			<div id="contentSlider" class="landing-raschet-summa-number-summ"></div>
			<div class="landing-raschet-summa-number-curr">₽</div>
		</div>
	</div>
	<div class="grade1">
		<div id="slider"></div>
	</div>
	<div class="landing-raschet-srok">
		<div class="landing-raschet-srok-text">Срок гарантии</div>
		<div class="landing-raschet-srok-number">
			<div id="contentSlider2" class="landing-raschet-srok-number-summ"></div>
			<div class="landing-raschet-srok-number-curr">месяцев</div>
		</div>
	</div>
	<div class="grade2">
		<div id="slider2"></div>
	</div>
</div>
Ответить с цитированием
  #18 (permalink)  
Старый 25.09.2017, 17:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

the_little,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <script>


$(function() {
    var arr = [0, 0];

    function fn() {
        $("#contentSlider").html(addSpaces(arr[0]));
        $("#contentSlider2").html(arr[1]);
        $("#calc-summ").html(arr[0] / 1E6 + arr[1])
    }
    $("#slider").slider({
        range: "min",
        value: 5E7,
        min: 1E5,
        max: 1E8,
        step: 1E5,
        slide: function(event, ui) {
            arr[0] = +ui.value;
            fn()
        },
        change: function(event, ui) {
            arr[0] = +ui.value;
            fn()
        }
    });
    $("#slider").slider("option", "value", 5E7);

    function addSpaces(nStr) {
        nStr += "";
        x = nStr.split(".");
        x1 = x[0];
        x2 = x.length > 1 ? "." + x[1] : "";
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) x1 = x1.replace(rgx,
            "$1" + " " + "$2");
        return x1 + x2
    }
    $("#slider2").slider({
        range: "min",
        value: 24,
        min: 1,
        max: 80,
        step: 1,
        slide: function(event, ui) {
            arr[1] = +ui.value;
            fn()
        },
        change: function(event, ui) {
            arr[1] = +ui.value;
            fn()
        }
    });
    $("#slider2").slider("option", "value", 24)
});
  </script>
</head>

<body>
<div class="landing-raschet-left-block">
  <h2>Рассчитайте стоимость прямо сейчас</h2>
  <div class="landing-raschet-summa">
    <div class="landing-raschet-summa-text">Сумма гарантии</div>
    <div class="landing-raschet-summa-number">
      <div id="contentSlider" class="landing-raschet-summa-number-summ  slider-range"></div>
      <div class="landing-raschet-summa-number-curr">₽</div>
    </div>
  </div>
  <div class="grade1">
    <div id="slider"></div>
  </div>
  <div class="landing-raschet-srok">
    <div class="landing-raschet-srok-text">Срок гарантии</div>
    <div class="landing-raschet-srok-number">
      <div id="contentSlider2" class="landing-raschet-srok-number-summ slider-range"></div>
      <div class="landing-raschet-srok-number-curr">месяцев</div>
    </div>
  </div>
  <div class="grade2">
    <div id="slider2"></div>
  </div>
</div>

<div id="calc-summ"></div>
</body>
</html>
Ответить с цитированием
  #19 (permalink)  
Старый 25.09.2017, 21:29
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

Ну что я могу сказать - профессионал!

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

Спасибо!
Ответить с цитированием
  #20 (permalink)  
Старый 25.09.2017, 23:24
Профессор
Отправить личное сообщение для the_little Посмотреть профиль Найти все сообщения от the_little
 
Регистрация: 25.09.2017
Сообщений: 186

В целом все понял.
А вот это
fn()
что делает? Отправляет значение в функцию fn()?

Я немного добавил арифметики, и еще пару элементов в массив.
Считает все правильно, но при загрузке страницы, пока ползунок не подвигаешь - ничего не выводит. Подвигаешь - все правильно считает.
$(function() {
    var arr = [0, 0, 0, 0];

    function fn() {
        $("#contentSlider").html(addSpaces(arr[0]));
        $("#contentSlider2").html(arr[1]);
        $("#calc-summ").html(addSpaces(arr[2]));
        $("#calc-market").html(addSpaces(arr[2] * 1.2));

        if (arr[0] <= 1000000 && arr[1] <= 12)
		{
			arr[2] = 3000;
		}
		else 
		{
			arr[2] = arr[0] * arr[1] / 12 * 1.5 / 100;
		}
    }
    $("#slider").slider({
        range: "min",
        value: 5E7,
        min: 1E5,
        max: 1E8,
        step: 1E5,
        slide: function(event, ui) {
            arr[0] = +ui.value;
            fn()
        },
        change: function(event, ui) {
            arr[0] = +ui.value;
            fn()
        }
    });
    $("#slider").slider("option", "value", 5E7);

    function addSpaces(nStr) {
        nStr += "";
        x = nStr.split(".");
        x1 = x[0];
        x2 = x.length > 1 ? "." + x[1] : "";
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) x1 = x1.replace(rgx,
            "$1" + " " + "$2");
        return x1 + x2
    }
    $("#slider2").slider({
        range: "min",
        value: 24,
        min: 1,
        max: 80,
        step: 1,
        slide: function(event, ui) {
            arr[1] = +ui.value;
            fn()
        },
        change: function(event, ui) {
            arr[1] = +ui.value;
            fn()
        }
    });
    $("#slider2").slider("option", "value", 24)
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется программист на QML для создания интерфейса клиентской программы для общения m.simakov Работа 0 11.02.2016 18:07
isDefaultSelected - как ее использовать для...? Semen Events/DOM/Window 2 25.08.2009 20:13
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30
Размер ячейки использовать для определения размера рисунка art_em Общие вопросы Javascript 2 20.11.2008 11:27