Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2018, 13:35
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

Присвоить рандомно класс
Привет. Нужно чтобы класс show присваивался рандомно к li. В данном коде он последовательно присваивается по кругу от li к li.

$('#hide_right li:first-child').addClass('');
    setInterval(function () {
        var show_element = $('#hide_right li.show');
        var next_element = $('#hide_right li.show').next();
        if (next_element.length == 0) {
            next_element = $('#hide_right li:first-child');
        }
        show_element.removeClass('show');
        next_element.addClass('show');
    }, 2000);
});


Думаю в этом направлении.
Вначале следует сгенерировать рандомный порядок li наверное:
function numLi(){  
                   var element = $('#hide_right li'); 
		   var min = 1;
		   var max =element.length; 
	       for (var i = 0; i < 1  ; i++){
		      randomLi = Math.floor(Math.random() * (max - min +1)) + min;	   
		      }
 
		   return randomLi;
 
		}

А вот дальше сомневаюсь)
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2018, 14:11
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

ureech, так надо?
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<style>
	.show{display: block;}
	li {display: none;}
</style>
<ul id="hide_right">
	<li>Item1</li>
	<li>Item2</li>
	<li>Item3</li>
	<li>Item4</li>
	<li>Item5</li>
</ul>
<script>
	var max =$('#hide_right li').length;
		setInterval(function () {
			var min = 1;
			randomLi = Math.floor(Math.random() * (max - min +1)) + min; 
			$('#hide_right li.show').removeClass('show');
			$('#hide_right li').eq(randomLi-1).addClass('show');
		}, 1000);
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2018, 14:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Manyasha,
а без min ?
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2018, 14:27
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 778

ну, да.Можно и без)
randomLi = Math.floor(Math.random() * (max+1));
Спасибо,Manyasha
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2018, 15:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

рандомно без повторений
ureech,
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<style>
    .show{display: block;}
    li {display: none;}
</style>
<ul id="hide_right">
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
    <li>Item4</li>
    <li>Item5</li>
</ul>
<script>
    var li = $('#hide_right li').get(), el = rnd(li), temp = [];
    function rnd(li)
    {
       var index = Math.floor(Math.random() * li.length);
       return li.splice(index,1)
    }

    function show()
    {
       li.length || (li = temp, temp = []);
       $(el).removeClass('show');
       temp = temp.concat(el);
       el = rnd(li);
       $(el).addClass('show');
       window.setTimeout(show, 1000)
    }
    show()

</script>
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2018, 17:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от ureech
ну, да.Можно и без)
без значит без,
randomLi = Math.floor(Math.random() * max);
//...
 $('#hide_right li').eq(randomLi).addClass('show');
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2018, 00:07
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<style>
    .show{display: block;}
    li {display: none;}
</style>
<ul id="hide_right">
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
    <li>Item4</li>
    <li>Item5</li>
</ul>
<script>
    var li = $('#hide_right li'), x;
    (function show(){
    	 do index = Math.floor(Math.random() * li.length);
    	 while(x == index);
         li.eq(x).removeClass('show');
    	 x = index;
       li.eq(index).addClass('show');
       setTimeout(show, 1000);
    }());
</script>


без повторений

Последний раз редактировалось j0hnik, 07.07.2018 в 15:07.
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2018, 06:53
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

j0hnik,
А чему равно x?
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2018, 09:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от j0hnik
без повторений
но лишние генерации индекса + цикл при удалении класса, когда есть(будет, не доделан х) x равный индексу элемента?
Ответить с цитированием
  #10 (permalink)  
Старый 07.07.2018, 15:09
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Dilettante_Pro,
x = index; предыдущей генерации
Спасибо за замечание

рони цикл убрал, генерация лайтовый процесс, тем более его вероятность тут 20%.
Конкатенация например гораздо более тяжелый процесс

Последний раз редактировалось j0hnik, 07.07.2018 в 15:34.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Если input заполнен присвоить класс родителю div dasha862 jQuery 22 06.09.2017 14:30
Присвоить input name такой же как класс у div alex-tiesto jQuery 2 05.03.2017 01:01
Как выбрать элемент по классу и присвоить ему еще один класс? Ikles Events/DOM/Window 8 18.11.2016 13:34
Присвоить один класс рандомно для списка элементов moslem jQuery 2 02.04.2016 14:44
присвоить класс родителю ufaclub jQuery 1 10.03.2016 06:48