Задать вопрос
@Senseich

Почему глобальная переменная не меняется внутри функции?

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

Написал скрипт для вывода необходимых ссылок со страницы, но не понимаю почему в консоль не выводится переменная silkaNew , которая меняется в методе $.get
Вроде делал по правилам, объявил глобально и использовал в функции, но в консоль выводится значение, которое присвоено изначально.
Что я не так делаю, подскажите пож-та?

var arr= [некий массив артикулов];

for(let i = 0; i < arr.length; i++){
  
  var elem = arr[i];
  var link = 'ссылка' + elem;
  var silkaNew = '';
  
        $.get(link, function(data) {

            var $obj = $(data);
          
            var silka = $obj.find('a.catalog-card__link.text-gray-dark').attr('href');
                silkaNew = 'https://сайт.ru' + silka;

             }
          )

console.log(elem + '# ' + silkaNew);
   
}


Мне главное чтобы выводило эту связку elem + '# ' + silkaNew .. я конечно пробовал выводить console.log внутри метода get, но тогда обратная проблема: silkaNew выводится как надо, а переменная elem у всех одинаковая вывдится и равна последнему элементу в массиве, тоже не понимаю почему так.
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@betterthanyouthink
Начинающий программист :)
допишите .done() после $.get и выводите console.log там

https://api.jquery.com/jquery.get/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Коллбек в $.get(link, выполняется позже чем console.log(elem + '# ' + silkaNew);
Если хотите писать на JS нужно понять и принять понятие "асинхронный код"
Выше уже написали, что в этом случае нужно использовать done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы