За последние 24 часа нас посетили 16937 программистов и 1180 роботов. Сейчас ищет 1631 программист ...

Доступ к переменной из внешней функции

Тема в разделе "JavaScript и AJAX", создана пользователем solar25, 26 апр 2022.

  1. solar25

    solar25 Новичок

    С нами с:
    4 июн 2021
    Сообщения:
    11
    Симпатии:
    1
    Всем привет. Я новичок в JS. Прошу пожалуйста помощи. Хочу, чтобы переменная address была доступна в функции на строке 30.

    Код (Javascript):
    1. ymaps.ready(init);
    2. //var address;
    3. function init () {
    4.     var myMap = new ymaps.Map('map', {
    5.             center: [55.76, 37.64],
    6.             zoom: 10
    7.         }, {
    8.                    balloonMaxWidth: 200,
    9.                    searchControlProvider: 'yandex#search'
    10.         });
    11.            myMap.events.add('click', function (e) {
    12.            
    13.              jQuery.get("https://pkk.rosreestr.ru/api/features/1?sq={%22type%22:%22Point%22,%22coordinates%22:[38.3985,57.5299]}&tolerance=1&limit=11",           function(data){
    14.             //obj=JSON.parse(data);
    15.        // alert("Data: " + data.features.[0].attrs.address);
    16.         var address = data.features.[0].attrs.cn;
    17.         console.log(address);
    18.         //return address;
    19.             }, "json");
    20.      // return address;
    21.      
    22.            
    23.         if (!myMap.balloon.isOpen()) {
    24.             var coords = e.get('coords');
    25.            // var a = data(address);
    26.         //  a = adr();
    27.             myMap.balloon.open(coords, {
    28.                 contentHeader:'Событие!',
    29.                 contentBody:'<p>Кто-то щелкнул по карте.</p>' +
    30.                    + address + '<p>Координаты щелчка: ' + [
    31.                     coords[0].toPrecision(6),
    32.                     coords[1].toPrecision(6)
    33.                     ].join(', ') + '</p>',
    34.                 contentFooter:'<sup>Щелкните еще раз</sup>'
    35.             });
    36.         }
    37.         else {
    38.             myMap.balloon.close();
    39.         }
    40.     });        
    41.          
    42. }
     
  2. solar25

    solar25 Новичок

    С нами с:
    4 июн 2021
    Сообщения:
    11
    Симпатии:
    1
    Решил так
    Код (Javascript):
    1. ymaps.ready(init);
    2. var address;
    3. function init () {
    4.     var myMap = new ymaps.Map('map', {
    5.             center: [55.76, 37.64],
    6.             zoom: 10
    7.         }, {
    8.                    balloonMaxWidth: 200,
    9.                    searchControlProvider: 'yandex#search'
    10.         });
    11.            myMap.events.add('click', function (e) {
    12.                var coords = e.get('coords');
    13.          console.log(coords[0].toPrecision(17));  
    14.         jQuery.get("https://pkk.rosreestr.ru/api/features/1?sq={%22type%22:%22Point%22,%22coordinates%22:[" + coords[1].toPrecision(17) + "," + coords[0].toPrecision(17) + "]}&tolerance=1&limit=11", function(data){
    15.     console.log(data);
    16.           var address = data.features[0].attrs.cn;
    17.     if (!myMap.balloon.isOpen()) {
    18.         //var coords = e.get('coords');
    19.         myMap.balloon.open(coords, {
    20.             contentHeader:'Событие!',
    21.             contentBody:'<p>Кто-то щелкнул по карте.</p>'
    22.                + address + '<p>Координаты щелчка: ' + [
    23.                 coords[0].toPrecision(6),
    24.                 coords[1].toPrecision(6)
    25.                 ].join(', ') + '</p>',
    26.             contentFooter:'<sup>Щелкните еще раз</sup>'
    27.         });
    28.     }
    29.     else {
    30.         myMap.balloon.close();
    31.     }
    32. }, "json");
    33.     });        
    34.          
    35. }
     
    i_am_mikser22 нравится это.
  3. i_am_mikser22

    i_am_mikser22 Новичок

    С нами с:
    9 июн 2022
    Сообщения:
    3
    Симпатии:
    0
    Лучше объявить переменную в самом начале функции.
    Делать переменные глобальными не очень хорошо. Да и использовать var сейчас считается плохим стилем. Лучше const или let, где const нельзя