1

У меня на сайте есть кнопка. Когда на нее нажимает пользователь, должно определяться его местоположение, а результат как-то сохраняться. Определяю местоположение с помощью Navigator.geolocation.В функции записываю результат в hidden field. Причем если после строчки document.getElementById(....) написать alert(document.getElementById('HiddenFieldMyGeolocation').value), то появиться окно с верным результатом. НО когда я пытаюсь обратиться к этому hiddenfield из другого фрагмента кода, то почему-то оказывается, что там ничего нет и данные не сохранились. Кто знает, подскажите пожалуйста в чем проблема и как ее исправить, бьюсь с этим уже неделю. У МЕНЯ document.getElementById('HiddenFieldMyGeolocation').value-ЭТО ГЛОБАЛЬНЫЙ ОБЪЕКТ, ПОЧЕМУ ЖЕ КОГДА Я МЕНЯЮ ЕГО ЗНАЧЕНИЕ В ФУНКЦИИ(ПУСТЬ ДАЖЕ ОНИ И АСИНХРОННЫЕ), ЕГО ЗНАЧЕНИЕ НЕ МЕНЯЕТСЯ?

navigator.geolocation.getCurrentPosition(
          function (position) {
              document.getElementById('HiddenFieldMyGeolocation').value = position.coords.latitude.toString() + position.coords.longitude.toString();
      },</code></pre>
Ilya189
  • 21
  • Вам надо понимать что geolocation api - асинхронное. То есть вопрос сводится к вопросу "как работать с асинхронными функциями" – Утка Учится Укрываться Jan 03 '17 at 23:00
  • @УткаУчитсяУму не уверен что дело именно в этом - по крайней мере, в приведенном фрагменте кода такой проблемы не наблюдается. – Pavel Mayorov Jan 04 '17 at 08:35
  • @PavelMayorov, в приведенном - не наблюдается, потому что всего кода у нас нет. Но симптоматика позволяет вынести диагноз с 95% уверенностью) Ну серьезно, в асинхронной функции устанавливается значение переменной, из другой функции это значение получить не удается. Типичный вопрос по асинхронщине кмк – Утка Учится Укрываться Jan 04 '17 at 08:39
  • Да, но у меня же HiddenValue, это же вроде глобальный объект, и когда я где-то в коде меняю его значение, оно же должно сохраняться, разве нет? – Ilya189 Jan 05 '17 at 11:34
  • Меняется, меняется. Просто не в то время, когда вы думаете. А тогда когда вам надо - ничего еще нет. И если редактируете вопрос, редактируйте пожалуйста осмысленно, А НЕ КРИЧИТЕ НА НАС БЕЗ ОТСТУПОВ И ЗНАКОВ ПРЕПИНАНИЯ – Утка Учится Укрываться Jan 06 '17 at 18:42
  • Да нифига не меняется! Я потом в отладке смотрю, там пусто, причем ВСЕГДА. Я поставил точку останова на другую кнопку, когда по идее весь код, описанный мной уже должен был выполниться. – Ilya189 Jan 06 '17 at 21:50

0 Answers0