简体   繁体   中英

how can i access a variable thats inside a function

Okey, i have gotten some data from 2 different JSON files, and i want to take one of them and divide with the other, how can i do that? I want to divide the 'sugString' with the 'htmlString'. And after i have done that i want to insert it into a different id like i have done with each of them already.

var flamingSkull = document.getElementById("flaming-skull");
var flamingSkullq = document.getElementById("flaming-skullq");
var flamingSkullSug = document.getElementById("flaming-skullsug");

  var ourRequest = new XMLHttpRequest();
    ourRequest.open('GET', 'https://api.opskins.com/IPricing/GetAllLowestListPrices/v1/?appid=433850');
    ourRequest.onload = function() {
      var ourData = JSON.parse(ourRequest.responseText);
      renderFlamingSkull(ourData);
};

   ourRequest.send();


var ourRequest2 = new XMLHttpRequest();
  ourRequest2.open('GET', 'https://api.opskins.com/IPricing/GetPriceList/v1/?appid=433850');
  ourRequest2.onload = function() {
     var ourData2 = JSON.parse(ourRequest2.responseText);
     renderFlamingSkullSug(ourData2);
};

   ourRequest2.send();



function renderFlamingSkullSug(data) {

   var sugString = data.response[ 'Skin: Flaming Skull Face Bandana' ][today].price / 100;

   flamingSkullSug.insertAdjacentHTML('beforeend', "$" + sugString);
}

function renderFlamingSkull(data) {

   var htmlString = data.response[ 'Skin: Flaming Skull Face Bandana' ].price / 100;
   var quantityString = data.response[ 'Skin: Flaming Skull Face Bandana' ].quantity;


   flamingSkull.insertAdjacentHTML('afterbegin', "$" + htmlString);
   flamingSkullq.insertAdjacentHTML('beforeend', "<p>(" + quantityString + ")</p>");
}

One solution is to create a request function and use a callback on it. So you can chain the two requests together and have access to both responses.

 var flamingSkull = document.getElementById("flaming-skull"); var flamingSkullq = document.getElementById("flaming-skullq"); var flamingSkullSug = document.getElementById("flaming-skullsug"); var lowestPriceUrl = 'https://api.opskins.com/IPricing/GetAllLowestListPrices/v1/?appid=433850'; var priceListUrl = 'https://api.opskins.com/IPricing/GetPriceList/v1/?appid=433850'; function makeRequest (method, url, done) { var xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.onload = function () { done(null, JSON.parse(xhr.responseText)); }; xhr.onerror = function () { done(JSON.parse(xhr.responseText)); }; xhr.send(); } makeRequest('GET', lowestPriceUrl, function (err, res) { if (err) { throw err; } makeRequest('GET', priceListUrl, function (err, res2) { if (err) { throw err; } var sugString = res[ 'Skin: Flaming Skull Face Bandana' ][today].price / 100; var htmlString = res2[ 'Skin: Flaming Skull Face Bandana' ].price / 100; var quantityString = res2[ 'Skin: Flaming Skull Face Bandana' ].quantity; flamingSkullSug.insertAdjacentHTML('beforeend', "$" + sugString); flamingSkull.insertAdjacentHTML('afterbegin', "$" + htmlString); flamingSkullq.insertAdjacentHTML('beforeend', "<p>(" + quantityString + ")</p>"); // Complete division // ================== // var division = Math.round(sugString/htmlString) }); }); 

Using another question as reference: How do I promisify native XHR?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM