Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Kristo78
0 / 0 / 2
Регистрация: 02.08.2014
Сообщений: 5
#1

Событие по массиву с координатами курсора мыши - JavaScript

27.12.2014, 20:58. Просмотров 402. Ответов 1
Метки нет (Все метки)

Всем Привет! Подскажите пожалуйста в каком направлении двигаться. Ситуация в следующем:
Имеем координату Х курсора мыши:
Javascript
1
 var x1 = Math.round((e.pageX - $(this).offset().left)*10);
Имеется массив X-координат вертикальных линий:
Javascript
1
2
 var konf = new Array();
konf = (1500, 2400, 3300, 4200); // массив может быть любой длины.
Необходимо, чтобы при наведении курсора на линию, т.е. х1 будет равен одному из элементов массива konf, срабатывало условие (у меня смена фона страницы). Сделано следующее:
Javascript
1
 var x2 = jQuery.inArray(x1, konf);
на выходе имеем необходимую нам координату и делаем с ней все, что нам нужно. Все бы хорошо, но есть одно весомое НО. Переменная х1 изменяется, при разных масштабах экрана, с разным шагом, т.е. двигая мышь слева на право, мы получаем такие координаты мыши, например: ……, 1489, 1499, 1509, 1519, 1529, ….. В итоге поймать курсор на координате 1500 не представляется возможным не изменив масштаб страницы, собственно это происходит и с остальными линиями. Естественно пользователь делать этого не будет. Что делать?
Есть идея создать диапазон рядом с линией, в который при попадании курсора мыши и будет выполняться наше условие, к примеру, 20 слева и 20 справа. В итоге:
Javascript
1
2
3
4
5
6
7
8
if (konf.length>0){
   var konf2 = new Array();
   var d = 20;
   for (var i=0, j=0; i<konf.length; i++, j=j+2){
      konf2[j]= Number(konf[i])-d;
      konf2[(j+1)]= Number(konf[i])+d;
   }; //конец цикла for 
};
получаем массив konf2(1480, 1520, 2380, 2420, 3280, 3320, 4180, 4220), т.е несколько диапазонов; 1480-1520, 2380-2420, 3280-3320, 4180-4220. Далее:
Javascript
1
2
3
4
5
6
7
8
9
for (var i=0; i<konf2.length; i=i+2) {
   if ( x1 >= ( Number(konf2[i])) && x1 <=  (Number(konf[i+1]))  ){
      $('body').removeClass('body2');
      $('body').addClass('body');
   } else {
      $('body').removeClass('body');
      $('body').addClass('body2');
   };
};
Вот как-то так. Все вроде должно работать, но работает только последний диапазон 4180-4220 (линия с х-координатой 4200), остальные молчат. Т.е. цикл пробежался по ним, последнюю "i" запомнил и по ней две цифры выводит. Что делать? Кто виноват? Подскажите пожалуйста в каком направлении копать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2014, 20:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Событие по массиву с координатами курсора мыши (JavaScript):

Событие мыши: перемещение мыши при нажатой левой клавиши
Подскажите, пожалуйста как реализовать следующее: При перемещении мыши при...

Перемещения курсора мыши
Доброго времени суток! Возможно ли реализовать перемещения курсора мыши по...

Изменение курсора мыши на картинку
Здравствуйте, подскажите, можно ли при помощи javascript изменить изображение...

Управление позицией курсора мыши
Доброго времени суток! Прошу помочь с не простой задачей: Отслеживать...

Подсказка при наведении курсора мыши
Смотрю видеоурок, и там переписал вот такой код. Должно при наведении на текст...

Как узнать координаты курсора мыши
Как узнать положение курсора мыши на страницу?

1
kalabuni
Нарушитель
3163 / 2512 / 602
Регистрация: 18.04.2012
Сообщений: 7,608
29.12.2014, 04:50 #2
Цитата Сообщение от Kristo78 Посмотреть сообщение
в каком направлении копать.
изучите дефиницию break - выход из цикла с сохранением текущего индекса цикла
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2014, 04:50
Привет! Вот еще темы с решениями:

Узнать растояние от начала блока до курсора мыши
Ситуация такая, есть видео плеер, весь контроль написан с нуля, и дело в том...

Стопаем setInterval на событие мыши
Не пойму как стопнуть событие &quot;setInterval&quot; когда курсор мыши находиться над...

Смена фона при наведении курсора мыши на ячейку таблицы
Создать функцию, которая будет изменять фон слоя в соответствии с фоном ячейки...

При наведении курсора мыши на картинку ее изображение должно меняться на другое
1. По нажатию на кнопку button_1 пользователь получает одно из трех сообщений:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru