Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.04.2015, 23:39
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

ползун range
Здравствуйте, подскажите пожалуйста как решить такую задачу. есть элемент range, 2 списка - в первом слово, dj втором описание к нему. Также в низу есть 2 кнопки: вперед и назад. при изменении положения ползуна должны поочередно менять background элементы списка. При клике на элемент списка со словом, должно меняться положение ползуна. При клике на кнопку "вперед" , должен поменяться бэкграунд у следующего элемента списка. Как связать работу этих трех элементов (ползуна, списка и кнопки) чтобы они работали синхронно. Может быть не стоило делать последовательное выполнение событий при наступлении одного из них?
<input id='polzun'type="range" name="quantity">
			<h3>Определение</h3>
			<ul id ="spisok">
				<li >Строители</li>
				<li >Слон</li>
				<li >Соседи</li>
				<li >Рояль</li>
				<li >Рукокрылая свинья</li>
			</ul>
			<h3>Пояснение</h3>
			<ul id ="opredelenie">
				<li> <span>Курили бетон</span> </li>
				<li ><span>Сильный он</span></li>
				<li ><span>Клопы и медведи</span></li>
				<li ><span>Украли через форточку</span></li>
				<li ><span>Уселась на жордочку</span></li>
			</ul>
			<button id="prev">Назад</button>
			<button id="next">Вперед</button>

$(function() {
			

/********************************************************/
	$("#polzun").attr('max',$('#spisok li').length-1);
	$("#polzun").attr('min','0');
	$("#polzun").val('0');

	var spisok = $('#spisok li');
	var opredelenie = $('#opredelenie li');
	var length = $('#spisok li').length;
	var index =0;
	var buf=0;
		$("#polzun").on('change',function(){
				var z=$(this).val();
				spisok.eq(z).addClass('colorli').siblings().removeClass('colorli');
				index =z;
				opredelenie.eq(z).show().siblings().hide();
		})
		.trigger('change');
/****************************************************/
		$('#spisok').on('click.spisok','li',function(){

			if ($(this).hasClass('clicked')){
				 buf = index;
			}
			else {
				buf= spisok.index( this );
				
			}
			$(this).toggleClass('clicked');
			
			//console.log(index);
			$("#polzun")
				.val(buf)
					.trigger('change');		
		});
/***************************************************************************/

	$('#next').on('click.button', function(){
			if (index <(length-1) ) {
				index++;
			}
			else {
				index=0;
			}
			//spisok.eq(index).toggleClass('clicked');
			console.log(index);
			spisok .next().trigger('click.spisok');

	});
		});
Ответить с цитированием
  #2 (permalink)  
Старый 21.04.2015, 01:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Зависимые ползунок и список
Moloch,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   .clicked {
     display: inline-block;
     background-image: -webkit-gradient(linear, left, right, color-stop(0, #5CC3FF), color-stop(1, #0060BF));
     background-image: -o-linear-gradient(left, #5CC3FF, #0060BF);
     background-image: -moz-linear-gradient(left, #5CC3FF, #0060BF);
     background-image: -webkit-linear-gradient(left, #5CC3FF, #0060BF);
     background-image: linear-gradient(to right, #5CC3FF, #0060BF)
   }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    var spisok = $("#spisok li");
    var opredelenie = $("#opredelenie li");
    var length = spisok.length;
    var polzun = $("#polzun");
    var index = 0;
    polzun.attr({
        "max": length - 1,
        "min": 0
    }).val(index);
     function show() {
        spisok.removeClass("clicked").eq(index).addClass("clicked");
        opredelenie.hide().eq(index).show();
        polzun.val(index)
    }
    polzun.on("change", function() {
        index = $(this).val();
        show()
    }).trigger("change");
    spisok.on("click", function() {
        index = spisok.index(this);
        show()
    });
    $("#next, #prev").on("click", function() {
        this.id == "prev" ? index-- : index++;
        index == length && (index = 0);
        index < 0 && (index = length - 1);
        show()
    })
});

  </script>
</head>

<body>
<input id='polzun'type="range" name="quantity">
			<h3>Определение</h3>
			<ul id ="spisok">
				<li >Строители</li>
				<li >Слон</li>
				<li >Соседи</li>
				<li >Рояль</li>
				<li >Рукокрылая свинья</li>
			</ul>
			<h3>Пояснение</h3>
			<ul id ="opredelenie">
				<li> <span>Курили бетон</span> </li>
				<li ><span>Сильный он</span></li>
				<li ><span>Клопы и медведи</span></li>
				<li ><span>Украли через форточку</span></li>
				<li ><span>Уселась на жордочку</span></li>
			</ul>
			<button id="prev">Назад</button>
			<button id="next">Вперед</button>


</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 21.04.2015, 19:47
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

благодарю
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
range, selection координаты zebra Общие вопросы Javascript 2 16.04.2014 00:23
jQuery UI Range slider как заблокировать левый ползунок по первому клику Oleg_Pupkin jQuery 3 04.09.2013 13:44
firebug пишет ошибка invalid range in character class Dim@ Общие вопросы Javascript 5 10.05.2012 16:52
не работает range в ie like2dev Общие вопросы Javascript 2 21.09.2011 19:41
Метод pasteHTML объекта Range вырезает комментарии в IE orange Internet Explorer 6 28.12.2009 19:44