【发布时间】:2023-03-12 11:56:01
【问题描述】:
var container = document.getElementById("grid-container");
var btn = document.getElementById("btn");
var div;
var reuqest;
function HTTPRequest(url) {
request = new XMLHttpRequest();
request.open('GET', url);
request.onload = function() {
result(request);
};
request.send();
}
function result(data){
var res = JSON.parse(data.responseText);
var array = res.results;
var myObj = array[0];
console.log(myObj);
for (var i = 0; i < Object.keys(myObj).length; i++) {
div = document.createElement("div");
div.className = "grid-item";
container.appendChild(div);
for (let key in myObj) {
console.log(myObj[key]);
div.textContent = myObj[key];
}
}
}
btn.addEventListener('click', function() {
HTTPRequest('https://itunes.apple.com/search?term=jack+johnson','author');
});
我正在尝试遍历对象的所有属性,并为我创建的 div 提供上面对象的每个属性的文本内容。
由于某种原因,我得到:
true 而不是“track”、“song”等...
你知道为什么吗?
谢谢
【问题讨论】:
-
循环的每次迭代都会完全重新分配
textContent,替换之前设置的任何文本。从myObj循环访问的最后一个值似乎是布尔值。也许使用+=将值连接在一起。 -
你是想把所有的值串联在div中,还是把obj中的每个值都给每个div?
-
@RonnWilder 我希望每个属性值都填充每个 div,但我知道现在设置它会重复每个 div
标签: javascript loops object innerhtml