Не могу понять ошибку “Uncaught ReferenceError: var is not defined”

168
11 января 2017, 02:54

Обновляю данные вывожу их в лог все ок получаю обновленные данные, но когда на деле их вставляю, то выдает:

Uncaught ReferenceError: znak is not defined

а вот собственно код

 znac=setInterval(function (){
          znak= parseFloat($('td').eq(2).html());
    },1000);
    znac=setInterval(function (){
          lng0= parseFloat($('td').eq(2).html());
    },1000);
  myLatLng ={lat:znak,lng:lng0};
  var cntrik = {lat:40.394508, lng:49.7148758};
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 6,
    center: cntrik
  });
  var marker = new google.maps.Marker({
    position: myLatLng,
    map:map,
    title: 'Hello World!'
  });
  var intervalId=setInterval(function (){
      marker.setMap(null);
      console.log('udalen');
      marker.setMap(map);
      console.log('zamenen');
      console.log(znak);
      },5000);

}
Answer 1

1) Основная проблема: вы не где не объявили переменную znak;
2) Зачем создавать два одинаковых интервала с одним и тем же промежутком времени? Если можно все значения в один запихнуть

var znak = parseFloat($('td').eq(2).html()) || 0,
    lng0 = znak;
var znac = setInterval(function (){
   znak = lng0 = parseFloat($('td').eq(2).html());
},1000);
myLatLng = {lat: znak, lng: lng0};
   var cntrik = {lat:40.394508, lng:49.7148758};
   var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 6,
      center: cntrik
});
var marker = new google.maps.Marker({
   position: myLatLng,
   map:map,
   itle: 'Hello World!'
});
var intervalId = setInterval(function (){
   marker.setMap(null);
   console.log('udalen');
   marker.setMap(map);
   console.log('zamenen');
   console.log(znak);
}, 5000);
Answer 2

Для того, чтобы было возможно получить значение переменной, она должна быть объявлена.

В данном коде, идет попытка получения значения переменной znak до того, как идет ее неявное объявление с помощью присваивания в функциях таймера.

Аналогично и с lng0.

Присвоив переменной znac результат второго setInterval теряется ссылка на первый таймер и его теперь невозможно остановить. Вероятно стоит перенести это все в один таймер.

READ ALSO
Не отправляется Ajax методом POST

Не отправляется Ajax методом POST

Есть 4 поля для регистрацииПри отправки ajax-запроса в обработчик php ничего не происходит, ничего не появляется

210
Jquery удалить строку до символа

Jquery удалить строку до символа

Есть строка такого вида

179
Parallax эффект неправильно работает

Parallax эффект неправильно работает

Есть небольшая функция, но она работает не совсем корректно

125
Jquery. Добавление параметра в href к ссылкам с определенным id

Jquery. Добавление параметра в href к ссылкам с определенным id

Здравствуйте, На странице есть ссылки вида:

187