Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: fadeOut() Заменить на html() и вывести в виде fadeIn()
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » fadeOut() Заменить на html() и вывести в виде fadeIn()

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

1. pantela - 17 Мая, 2017 - 00:08:25 - перейти к сообщению
На странице в 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 в цыкле...?

спс.Ув.
2. OrmaJever - 17 Мая, 2017 - 00:28:49 - перейти к сообщению
вся проблема в том что внутри колбека fadeOut уже нету k, а точнее оно стоит на самый последний элемент. попробуйте внутри колбека заюзать this или там параметр должен передаваться, я уже не помню
3. pantela - 17 Мая, 2017 - 00:38:16 - перейти к сообщению
спс, Вроде ты прав... this не помогло, и странно что fadeOut() не принимает k, я ведь его спец. в цикл вставил... Растерялся
4. OrmaJever - 17 Мая, 2017 - 00:54:32 - перейти к сообщению
там суть не в цикле, а в асинхроности языка, и захвате переменных. JS внутри колбека передаёт ссылку на k (а не копирует саму переменную), то есть на данной итерации цикла значение может и будет верным, но пока даже самый первый fadeOut завершиться и вызовет колбек то цикл уже давно пройдёт и k будет установлен в последнее значение, и все колбеки получат уже последнее значение. Поэтому в колбеках всегда надо работать либо с this либо в колбеки обычно передают параметры с нужными данными
5. pantela - 17 Мая, 2017 - 01:07:12 - перейти к сообщению
спс, но просто когда пишу $(this).html(reports[k]+" records").fadeIn();, тогда элементы определяются, но вот reports[k] берёт значение последнего ключа,
а так-же вобще не вижу fadeOut/fadeIn эффекта...
или я что-то не так пишу... Однако


Создал функцию hideorshow вставил в for и передаю её 2 переменные, значение верно выводиться, вот только опять fadeOut/fadeIn эффекта нету...
6. pantela - 17 Мая, 2017 - 20:23:29 - перейти к сообщению
Не правельно я сделал callback?

Ну вот опишите свой метод, как вы делаете напр. скрытие блока, далее подстановку значения и далее вывод блока...
Поэтому мне в голову пришло только это fadeOut().html('значение').fadeIn()
7. OrmaJever - 17 Мая, 2017 - 22:31:24 - перейти к сообщению
надо каждому обьекту назначить ключ масива, что бы в колбеке можно было узнать для какого 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.   }
8. pantela - 18 Мая, 2017 - 00:18:10 - перейти к сообщению
спс, но не работает так, вообще в fadeOut() не входит... мучаем дальше )) Хотя странно, никто такое что ли не делал... ))
9. OrmaJever - 18 Мая, 2017 - 01:07:21 - перейти к сообщению
я такое делал, но не на jq, поэтому конкретно с обьектом jq и его методами помочь не смогу
10. armancho7777777 - 18 Мая, 2017 - 08:06:08 - перейти к сообщению
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. }
11. pantela - 18 Мая, 2017 - 11:47:21 - перейти к сообщению
спс., и тебе, но fadeOut() и fadeIn() всё-же не вижу... как бы сразу работает html() А? Что?? Где???

 

Powered by ExBB FM 1.0 RC1