Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2015, 12:28
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Перебор соседних элементов по "кругу"
Страничка заполняется квадратами, размер которых задается с помощью prompt. Ширина и высота окна формируется в соответствии от размера самого окна.

Хочу сделать что бы при клике на один из квадратов, все квадраты вокруг него изменяли цвет и так по степени нарастания области (как волна после того как кинул предмет в воду).

Но не хватает опыта, помогите придумать саму логику. Думал по индексам писать формулу, но тогда формула нужна для каждого квадрата.
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2015, 12:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от falkone
Думал по индексам писать формулу, но тогда формула нужна для каждого квадрата.
формула будет одна, на входе индекс клетки на выходе массив индексов клеток вокруг.
Сообщение от falkone
Страничка заполняется квадратами, размер которых задается с помощью prompt. Ширина и высота окна формируется в соответствии от размера самого окна.
как вы угадаите, чтоб клетки заполнили весь обьем, а не больше или меньше.
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2015, 12:44
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Вот так я заполняю страничку квадратами.
function myFunction() {
    var square = prompt("Please enter square size in px");
    var squareSize = parseInt(square);
    if (square != null) {
    	var wrapper = $('.wrapper').width();
    	var wrapperHeight = $('.wrapper').height();
    	var a = (wrapper / squareSize |0) * (wrapperHeight / squareSize |0);	
        var items = wrapper / squareSize |0;
        for (var i = 0; i < a; i++) {
          $('.wrapper').append('<div class="child">' + i +'<div>');
          $('.child').css({
             width: squareSize,
             height: squareSize
         });
      };
}
}


Как тогда быть, если я выберу угловой квадрат, тогда ведь массив инддексов должен совсем иначе считаться чем при выборе квадрата где то в центре странички.
Ответить с цитированием
  #4 (permalink)  
Старый 03.09.2015, 12:50
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Вот код в действии http://jsfiddle.net/falkone/73gLc3ap/1/
Ответить с цитированием
  #5 (permalink)  
Старый 03.09.2015, 12:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от falkone
Как тогда быть, если я выберу угловой квадрат, тогда ведь массив инддексов должен совсем иначе считаться чем при выборе квадрата где то в центре странички.
нет просто функция выдаст массив с меньшим числом клеток
Ответить с цитированием
  #6 (permalink)  
Старый 03.09.2015, 12:58
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Тогда как более правильно обойти выбранный и получить массив элементов вокруг него? Может изначально посчитать его порядковый номер именно в плане координат Х и У(строка и столбик) и потом уже из этого думаю будет не так сложно искать соседние?
Ответить с цитированием
  #7 (permalink)  
Старый 03.09.2015, 13:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

falkone,
пример работы такой функции.
Ответить с цитированием
  #8 (permalink)  
Старый 03.09.2015, 13:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от falkone
Может изначально посчитать его порядковый номер именно в плане координат Х и У(строка и столбик)
да вы на верном пути, потом взять (согласно шагу, для примера 1 )ряд сверху, ряд в котором клетка, и ряд снизу проверить на существование рядов -- а потом и клеток в рядах
Ответить с цитированием
  #9 (permalink)  
Старый 03.09.2015, 13:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от Rise
falkone, может быть триггировать клик на соседних клетках
их надо сначала вычислить потом можно волну гнать
Ответить с цитированием
  #10 (permalink)  
Старый 03.09.2015, 13:13
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Сообщение от Rise Посмотреть сообщение
falkone, может быть триггировать клик на соседних клетках, те в свою очередь на своих соседях и тд... причем игнорировать клетки с которых триггер пришел...
Можно более подробно как работает этот метод и как его использовать?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор элементов Sherminator Events/DOM/Window 1 26.05.2014 23:25
Как удалить класс у соседних элементов housewm Events/DOM/Window 4 11.03.2014 13:29
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
Перебор дерева элементов - не хочет работать скрипт... caca0 Javascript под браузер 7 18.05.2012 20:07
Перебор DOM элементов DjDiablo jQuery 3 04.02.2011 16:26