Область видимости переменной в JavaScript?

Добрый день. У меня стоит задача: вытянуть значение из DOM и передать по Ajax.

Вытягиваю значение:
document.addEventListener("DOMContentLoaded", function () {

 function sdf(){
var atr = document.getElementById('P2').getAttribute('data-price');;
// alert(atr);
window.atr = atr;
// alert(window.atr);
// console.log(atr);
}
 sdf();
});

alert(window.atr); // выводит undefined


Ajax-запрос:

function payment() {
    var atr = 5; // Здесь должно быть значение window.atr
 
   // console.log(atr);
    var xmlhttp = getXmlHttp(); // Создаём объект XMLHTTP
    xmlhttp.open('POST', 'send.php', true); 
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send("atr=" + encodeURIComponent(atr));
    xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4) { 
        if(xmlhttp.status == 200) { 
          document.getElementById("summa").innerHTML = xmlhttp.responseText;
        }
      }
    };
  }
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Порядок выполнения:
// Выполнится 2-м
document.addEventListener("DOMContentLoaded", function () {
    function sdf(){
        var atr = document.getElementById('P2').getAttribute('data-price');;
        // alert(atr);
        window.atr = atr;
        // alert(window.atr);
        // console.log(atr);
    }
    sdf();

    // <-- вот тут вы можете проверить свой atr
});

// Выполнится 1-м
alert(window.atr); // выводит undefined


Соответственно, вам ничего не нужно никуда вытягивать, а поместить ВЕСЬ код внутрь колбэка на DOMContentLoaded.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы