昨天我发布了有关此内容的消息,但我仍然傻眼了。 我似乎无法弄清楚这个问题。当用户单击状态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变量。
答案 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);
}