我不明白为什么我的全局变量没有更新?

时间:2019-05-06 12:39:56

标签: javascript

昨天我发布了有关此内容的消息,但我仍然傻眼了。 我似乎无法弄清楚这个问题。当用户单击状态SVG时,我想用stateName变量的新值更新parkEndpoint URL。它一直作为第1行的原始值出现。

我尝试在控制台中查找,并且在函数getStateName运行后,它确实会更新stateName变量,但是当我在该函数运行后控制台登录parkEndpoint变量时,它仍然显示旧变量,我只是将其设置为空。

var stateName = "";
const alertEndpoint = ("https://developer.nps.gov/api/v1/alerts? 
&limit=400&api_key=" + apikey );
var parkEndpoint = ("https://developer.nps.gov/api/v1/parks? 
stateCode=" + stateName + "&limit=100&api_key=" + apikey);

const elements = document.querySelectorAll('path');
console.log(elements);

// add event listeners
elements.forEach(function(el) {
  el.addEventListener("click",  getStateName);

});


   function getStateName(nodeList){
   stateName = nodeList.path[0].id;
   outputStateName(stateName);

 }

   function outputStateName(stateName) {
   console.log(stateName);
   console.log(parkEndpoint);
  }

我只希望它更新URL中的stateName变量。

2 个答案:

答案 0 :(得分:0)

这是因为您没有更新parkEndpoint的值

在javascript中,字符串通过引用存储。含义parkEndpoint引用了定义的字符串L3,以后不再重新分配。

您需要在getStateName函数中重新分配它。

答案 1 :(得分:0)

您的statName变量开头是空的,即使从stateName = nodeList.path[0].id;获取状态名之后,变量 parkEndpoint 也不会被更新。

var stateName = '';
var parkEndpoint = parkEndpointUpdate();

function parkEndpointUpdate(){
   return `https://developer.nps.gov/api/v1/parks?
   stateCode=${stateName}&limit=100&api_key=${apikey}`
}

function getStateName(){
   stateName = nodeList.path[0].id;
   parkEndpoint = parkEndpointUpdate(); // This func will updated your variable of parkEndPont
   outputStateName(stateName);
}