Javascript.RU

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

Помощь с циклом
var articlesn = $(".article").length;
for(var i=1;i<=articlesn;i++){
	$("#art"+i).mouseover(function() {
		$("#desc"+i).show(0);
	});
	$("#art"+i).mouseout(function() {
		$("#desc"+i).hide(0);
	});
}

Известно, что элементов с классом article - 12.
Но по работе данного скрипта стало ясно, что в цикле он присваивает переменной i значение 13.
Как сделать так, чтобы в цикле значение переменной i увеличивалось постепенно (собственно, как и должно быть)?
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2014, 16:04
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

var articlesn = 12;
for(var i=1;i<=articlesn;i++)
{
    alert(i);
}

С циклом-то у тебя все в порядке. У тебя в другом месте проблема. Смотри - ты пробегаешься по элементам и назначаешь им обработчик события
function() {
        $("#desc"+i).show(0);
    }

, но этот обработчик выполняется не сразу, а только при наведении мышкой. Естественно, там значение переменной i уже совершенно другое.

Вообще, внутри всевозможных обработчиков событий всегда доступна переменная this, в которой содержится ссылка на элемент, которому этот обработчик принадлежит. Попробуй достучаться до нужного desc, используя данные art, на который наводится мышка.

Если не получается достучаться внутри функции, то функцию можно сгенерировать динамически во время выполнения цикла с помощью new Function вот таким образом:
new Function("", "$('#desc"+i+"').hide(0);")

При этом в тело функции будет включена не сама переменная i, а ее значение, и все пройдет, как надо.

Последний раз редактировалось Erolast, 22.03.2014 в 16:15.
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2014, 16:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

noak96,
использовать .each вместо for раз у вас jquery и незнаите это Пример ошибочного использования
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2014, 16:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

noak96,
да и цикл вам ненужен скорее всего он даже лишний -- приведите структуру с чем работите?
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2014, 16:24
Аватар для noak96
Интересующийся
Отправить личное сообщение для noak96 Посмотреть профиль Найти все сообщения от noak96
 
Регистрация: 25.06.2013
Сообщений: 23

рони, выведены список материалов. При наведении по каждому, должна плавно отображаться определенная информация, а затем снова исчезать.
Получается, нужно к каждому материалу присваивать уникальное число, чтобы затем, при событии MouseOver и MouserOut срабатывали функции.
А чтобы для каждого материала не писать эти функции с событиями, я понял, что удобнее будет написать цикл.
Ответить с цитированием
  #6 (permalink)  
Старый 22.03.2014, 16:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

noak96,
советы как это сделать циклом выше -- без цикла если интересно нужна структура
Ответить с цитированием
  #7 (permalink)  
Старый 22.03.2014, 16:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

noak96,
и лучше использовать классы а не id
Ответить с цитированием
  #8 (permalink)  
Старый 22.03.2014, 16:29
Аватар для noak96
Интересующийся
Отправить личное сообщение для noak96 Посмотреть профиль Найти все сообщения от noak96
 
Регистрация: 25.06.2013
Сообщений: 23

Сообщение от рони Посмотреть сообщение
noak96,
и лучше использовать классы а не id
почему?
Ответить с цитированием
  #9 (permalink)  
Старый 22.03.2014, 16:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от noak96
почему?
потому что для описания чего-то однотипного лучше использовать один идентификатор для каждого элемента
Ответить с цитированием
  #10 (permalink)  
Старый 22.03.2014, 16:43
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

http://learn.javascript.ru/play/vqJLlc

Последний раз редактировалось Vlasenko Fedor, 22.03.2014 в 17:08.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесплатная помощь новичкам iCanary Общие вопросы Javascript 11 30.11.2015 20:35
Нужна помощь по javascript darklend Общие вопросы Javascript 0 12.01.2014 23:33
Требуется помощь bboulevard Ваши сайты и скрипты 14 02.12.2013 17:47
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17