使用for循环在基本html表中显示来自服务器的json数据,仅限javascript,for循环有问题吗



我有以下Javascript代码:

var request = new XMLHttpRequest();
request.open("GET", "http://localhost:8080/CarSales/rest/cars", true);
request.onreadystatechange = function(){
if(request.readyState === XMLHttpRequest.DONE){
var status = request.status;
if (status === 0 || (status >= 200 && status < 400)){
var cars = JSON.parse(request.responseText);
var output = "";
for(var i in cars){
output ='<tr><td>'+cars[i].make+'</td><td>'+cars[i].model+'</td><td>'+cars[i].year+'</td> <td>'+cars[i].engine+'</td></tr>';
}
document.getElementById('table-body').innerHTML = output;
}else{
console.log("error");
}
}
};  
request.send(); 

以及以下HTML:

<!DOCTYPE html>
<html>
<head>
<script src="js/Q4.js"></script>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<table id="table">
<tr>
<th>Make</th>
<th>Model</th>
<th>Year</th>
<th>Engine</th>
</tr>
<tbody id="table-body"></tbody>
</table>
</body>
</html>

目前它正确输出了表中json数据的最后一个对象:https://i.stack.imgur.com/V73pC.png

如何让JS代码将所有json对象输出到表中?也许通过更改for循环来迭代json数据?

您错过了对每个循环进行追加。只需在输出后添加+=";它没有附加,这就是只显示最后一个循环值的原因。

for(var i in cars){
output +='<tr><td>'+cars[i].make+'</td><td>'+cars[i].model+'</td><td>'+cars[i].year+'</td> <td>'+cars[i].engine+'</td></tr>';
}

最新更新