Javascript 如何获取对象的元素?
我想从API端点()访问对象的一个元素,更准确地说是“货币”中的“名称”,但它总是返回未定义的 我试过currencies.name和currencies[“name”]但都不管用Javascript 如何获取对象的元素?,javascript,json,api,Javascript,Json,Api,我想从API端点()访问对象的一个元素,更准确地说是“货币”中的“名称”,但它总是返回未定义的 我试过currencies.name和currencies[“name”]但都不管用 const countries = document.getElementById('countries'); var request = new XMLHttpRequest(); request.open('GET', 'https://restcountries.eu/rest/v2/all', true)
const countries = document.getElementById('countries');
var request = new XMLHttpRequest();
request.open('GET', 'https://restcountries.eu/rest/v2/all', true);
data.forEach(name => {
const h1 = document.createElement('h1');
h1.textContent = name.capital; //this one works just fine
const h2 = document.createElement('h2');
h2.textContent = name.currencies.name; //the problem is in here
countries.appendChild(h1);
countries.appendChild(h2);
});
例如,我想得到“阿富汗阿富汗人”,不像以前那样没有定义。你的问题在于
货币
是一个数组
您必须说
name.currencies[0].name
,或者如果您有多个货币,则必须迭代数组以获取所有货币 您的问题在于货币
是一个数组
您必须说
name.currencies[0].name
,或者如果您有多个货币,则必须迭代数组以获取所有货币 问题在于货币是一个数组
因此,您应该使用c
urrencies[0]。例如,name
来获取第一种货币的名称。问题是货币是一个数组
因此,您应该使用c
urrencies[0]。例如,name
来获取第一种货币的名称。您可以执行以下操作,并且您不必担心一个国家是否有一种以上的货币:
const countries = document.getElementById('countries');
const request = new XMLHttpRequest();
request.open('GET', 'https://restcountries.eu/rest/v2/all', true);
request.onload = function (e) {
if (request.readyState === 4) {
if (request.status === 200) {
const data = JSON.parse(request.responseText);
data.forEach(function(item){
//add country
const h1 = document.createElement('h1');
h1.textContent = item.name;
countries.appendChild(h1);
//add currencies
item.currencies.forEach(function(currency){
const h2 = document.createElement('h2');
h2.textContent = currency.name;
countries.appendChild(h2);
});
});
} else {
console.error(request.statusText);
}
}
};
request.onerror = function (e) {
console.error(request.statusText);
};
request.send(null);
您可以执行以下操作,如果一个国家有多种货币,您不必担心:
const countries = document.getElementById('countries');
const request = new XMLHttpRequest();
request.open('GET', 'https://restcountries.eu/rest/v2/all', true);
request.onload = function (e) {
if (request.readyState === 4) {
if (request.status === 200) {
const data = JSON.parse(request.responseText);
data.forEach(function(item){
//add country
const h1 = document.createElement('h1');
h1.textContent = item.name;
countries.appendChild(h1);
//add currencies
item.currencies.forEach(function(currency){
const h2 = document.createElement('h2');
h2.textContent = currency.name;
countries.appendChild(h2);
});
});
} else {
console.error(request.statusText);
}
}
};
request.onerror = function (e) {
console.error(request.statusText);
};
request.send(null);