PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
pantela
Отправлено: 17 Мая, 2017 - 00:08:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 709
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




На странице в DIV блоке вывожу GIF анимацию, далее хочу заменить его на JSON AJAX результат через html() и высети виде fadeIn(), но сначало скрыть GIF через fadeOut()... т.е. что бы красиво заменилось бы...
Имееться HTML
CODE (html):
скопировать код в буфер обмена
  1. <div id="usa-Result">
  2.   <img src="theme/images/loading/loading_long.gif" />
  3. </div>
  4. <div id="russia-Result">
  5.   <img src="theme/images/loading/loading_long.gif" />
  6. </div>
  7. <div id="china-Result">
  8.   <img src="theme/images/loading/loading_long.gif" />
  9. </div>
  10. <div id="japan-Result">
  11.   <img src="theme/images/loading/loading_long.gif" />
  12. </div>


CODE (javascript):
скопировать код в буфер обмена
  1. success: function (result) {
  2.   // console.log(result.reports);
  3.   var reports = result.reports;
  4.  
  5.   for(var k in reports) {
  6.        $("#"+k+"-Result").fadeOut(function(){
  7.          $("#"+k+"-Result").html(reports[k]+" records").fadeIn('slow');
  8.        });
  9.   }
  10. }


Что не так... Растерялся ?$("#"+k+"-Result") всё верно определяет... Может быть ошибка в том что у меня fadeOut() в for в цыкле...?

спс.Ув.

(Отредактировано автором: 17 Мая, 2017 - 00:24:49)

 
 Top
OrmaJever
Отправлено: 17 Мая, 2017 - 00:28:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7536
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 298 раз(а)




вся проблема в том что внутри колбека fadeOut уже нету k, а точнее оно стоит на самый последний элемент. попробуйте внутри колбека заюзать this или там параметр должен передаваться, я уже не помню


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
pantela
Отправлено: 17 Мая, 2017 - 00:38:16
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 709
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




спс, Вроде ты прав... this не помогло, и странно что fadeOut() не принимает k, я ведь его спец. в цикл вставил... Растерялся
 
 Top
OrmaJever
Отправлено: 17 Мая, 2017 - 00:54:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7536
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 298 раз(а)




там суть не в цикле, а в асинхроности языка, и захвате переменных. JS внутри колбека передаёт ссылку на k (а не копирует саму переменную), то есть на данной итерации цикла значение может и будет верным, но пока даже самый первый fadeOut завершиться и вызовет колбек то цикл уже давно пройдёт и k будет установлен в последнее значение, и все колбеки получат уже последнее значение. Поэтому в колбеках всегда надо работать либо с this либо в колбеки обычно передают параметры с нужными данными


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
pantela
Отправлено: 17 Мая, 2017 - 01:07:12
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 709
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




спс, но просто когда пишу $(this).html(reports[k]+" records").fadeIn();, тогда элементы определяются, но вот reports[k] берёт значение последнего ключа,
а так-же вобще не вижу fadeOut/fadeIn эффекта...
или я что-то не так пишу... Однако


Создал функцию hideorshow вставил в for и передаю её 2 переменные, значение верно выводиться, вот только опять fadeOut/fadeIn эффекта нету...

(Отредактировано автором: 17 Мая, 2017 - 01:29:48)

 
 Top
pantela
Отправлено: 17 Мая, 2017 - 20:23:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 709
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Не правельно я сделал callback?

Ну вот опишите свой метод, как вы делаете напр. скрытие блока, далее подстановку значения и далее вывод блока...
Поэтому мне в голову пришло только это fadeOut().html('значение').fadeIn()
 
 Top
OrmaJever
Отправлено: 17 Мая, 2017 - 22:31:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7536
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 298 раз(а)




надо каждому обьекту назначить ключ масива, что бы в колбеке можно было узнать для какого k вызван этот колбек, но я не большой знаток jquery и не знаю как лучше это сделать, попробуй через data() назначить
CODE (javascript):
скопировать код в буфер обмена
  1.  for(var k in reports) {
  2.        $("#"+k+"-Result").data('k', k).fadeOut(function(){
  3.          this.html(reports[this.data('k')]+" records").fadeIn('slow');
  4.        });
  5.   }


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
pantela
Отправлено: 18 Мая, 2017 - 00:18:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 709
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




спс, но не работает так, вообще в fadeOut() не входит... мучаем дальше )) Хотя странно, никто такое что ли не делал... ))

(Отредактировано автором: 18 Мая, 2017 - 00:18:47)

 
 Top
OrmaJever
Отправлено: 18 Мая, 2017 - 01:07:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 7536
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 298 раз(а)




я такое делал, но не на jq, поэтому конкретно с обьектом jq и его методами помочь не смогу

(Отредактировано автором: 18 Мая, 2017 - 01:07:47)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
armancho7777777 Супермодератор
Отправлено: 18 Мая, 2017 - 08:06:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4634
Дата рег-ции: Февр. 2011  
Откуда: Иркутск, Россия


Помог: 212 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. for(var k in reports) {
  2.     (function(k){
  3.         $("#"+k+"-Result").fadeOut(function(){
  4.             $("#"+k+"-Result").html(reports[k]+" records").fadeIn('slow');
  5.         });
  6.     })(k);
  7. }


-----
Болтовня ничего не стоит. Покажите мне код.
-Linus Torvalds
 
 Top
pantela
Отправлено: 18 Мая, 2017 - 11:47:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 709
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




спс., и тебе, но fadeOut() и fadeIn() всё-же не вижу... как бы сразу работает html() А? Что?? Где???
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB