1 回答

TA貢獻1802條經驗 獲得超5個贊
您正在嘗試訪問循環中索引處的元素i,就像訪問對象的屬性一樣。i要獲取數組中位置的元素res.data,您需要方括號訪問[ ]
此外,您不會將year請求中的參數替換為year傳遞給函數的參數。您可能想檢查一下。
這里我以年份2018為例。
function printTItles(year) {
var res;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
res = JSON.parse(this.responseText);
for(var i=0;i<res.per_page;i++){
document.getElementById("demo").innerHTML = res.data[i].Title;
}
};
}
xmlhttp.open("GET", "https://jsonmock.hackerrank.com/api/movies?Year=2018", true);
xmlhttp.send();
}
printTItles();
<div id="demo"></div>
您可以添加更多改進。例如,在每次迭代中,您都會替換#demo元素的內容。這會導致僅顯示最后一個標題。相反,您可以將數據附加到 div 的現有 html 中?;蛘?,就像我在本例中所做的那樣,在將字符串設置為新值之前構建字符串innerHTML。
function printTItles(year) {
var res;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
res = JSON.parse(this.responseText);
var output = "";
for(var i=0;i<res.per_page;i++){
if(res.data[i]) {
output += res.data[i].Title + '<br />';
}
}
document.getElementById("demo").innerHTML = output;
};
}
xmlhttp.open("GET", "https://jsonmock.hackerrank.com/api/movies?Year=2018", true);
xmlhttp.send();
}
printTItles();
<div id="demo"></div>
我還添加了一個條件來檢查 處是否存在元素res.data[i]
。
添加回答
舉報