Javascript.RU

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

как выбрать случайный элемент из цикла
function next(arr) {
      var max = arr.length - 1,
        i = -1;
      return function () {
        i = i < max ? i + 1 : 0;
        return arr[i];
      };
    }
	
	
	
    $(function () {
      var slider = next($('svg path'));
      var curent;
      setInterval(function () {
        if (curent) $(curent).removeClass('red');
        curent = slider();
        $(curent).addClass('red');
      }, 150);
    });



вот такой код находит все path внутри svg и на 150 мс выставляет им class=red


как бы мне сделать чтобы не по кругу перебор был в случайном порядке? и класс присваивался бы не только red но и green , blue.

т.е случай элемент из массива и случайный class

Ответить с цитированием
  #2 (permalink)  
Старый 07.10.2019, 14:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

next(arr) должна возвращать случайный индекс массива.
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2019, 20:12
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 201

Пример бы... что то не получается (( помогите кто может пожалуйста.
Ответить с цитированием
  #4 (permalink)  
Старый 07.10.2019, 20:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Так по ссылке и примеры, сразу же первое и можно взять.

function next(arr) {
  return Math.floor(Math.random() * Math.floor(arr.length));
}
Ответить с цитированием
  #5 (permalink)  
Старый 07.10.2019, 21:55
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 201

function next(arr) {
  return Math.floor(Math.random() * Math.floor(arr.length));
}


	
	
    $(function () {
      var slider = next($('svg path'));
      var curent;
      setInterval(function () {
        if (curent) $(curent).removeClass('red');
        curent = slider();
        $(curent).addClass('red');
      }, 150);
    });



сделал так вообще ничего не работает
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2019, 21:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ufaclub,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

  <script>

   addEventListener('DOMContentLoaded', function() {
   const elems = [...document.querySelectorAll("path")],
   palette = ['red', 'green', 'blue'],
   getElem = arr => arr[arr.length * Math.random()|0],
   timer = () => {
       const path = getElem(elems), color = getElem(palette);
       path.style.fill = color;
       setTimeout(timer, 150)
   };
   timer()
     });
  </script>
</head>

<body>
    <svg width="190" height="160" xmlns="http://www.w3.org/2000/svg">

  <path d="M10 10 C 20 20, 40 20, 50 10" stroke="black" fill="transparent"/>
  <path d="M70 10 C 70 20, 120 20, 120 10" stroke="black" fill="transparent"/>
  <path d="M130 10 C 120 20, 180 20, 170 10" stroke="black" fill="transparent"/>
  <path d="M10 60 C 20 80, 40 80, 50 60" stroke="black" fill="transparent"/>
  <path d="M70 60 C 70 80, 110 80, 110 60" stroke="black" fill="transparent"/>
  <path d="M130 60 C 120 80, 180 80, 170 60" stroke="black" fill="transparent"/>
  <path d="M10 110 C 20 140, 40 140, 50 110" stroke="black" fill="transparent"/>
  <path d="M70 110 C 70 140, 110 140, 110 110" stroke="black" fill="transparent"/>
  <path d="M130 110 C 120 140, 180 140, 170 110" stroke="black" fill="transparent"/>

</svg>

</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 08.10.2019, 09:07
Профессор
Отправить личное сообщение для ufaclub Посмотреть профиль Найти все сообщения от ufaclub
 
Регистрация: 27.11.2010
Сообщений: 201

вот спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Выбрать активный элемент меню ALIEN-XIII jQuery 13 23.06.2013 11:51
Как сделать чтобы элемент появлялся при скроле страницы, у определенного класса. SnakeAce Общие вопросы Javascript 1 30.01.2013 14:32
Как выбрать предшествующий див? FRIE jQuery 6 22.06.2011 23:35
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11