在循环中使用 JSON 数据填充 <p> 标签
Populate <p> tags with JSON data for in loop
我正在尝试定位 18 个 $('.char-names') 元素并使用本地 JSON 文件中的名称动态填充。 3 个控制台日志显示 18 个不同的 id、charName、ingName,因此数据正在链接。它只是在每个插槽中使用相同的名称填充 $('.char-names') 。我在这里拔头发。
$.getJSON('people.json', function(data) {
for (var i in data) {
var charName = data[i].name;
var imgName = data[i].image;
var id = data[i].id;
console.log(id);
console.log(charName);
console.log(imgName);
$('.char-names').text(charName);
}
});
HTML...
<div class="faces-container">
<img src="img/face1.jpg" class="faces">
<p class="char-names"></p>
</div>
初学者不要在数组上使用 for in
。
如果 $('.char-names')
元素的索引与数组数据相同,则可以使用它们的索引
$.getJSON('people.json', function(data) {
var $charNames = $('.char-names');
$.each(data, function(i, obj){
$charNames.eq(i).text(obj.name);
});
});
如果索引不相同,则说明所提供的详细信息不足
也许是这样的。我没有测试过
$.getJSON('people.json', function(data) {
var charNamesArray = [];
for (var i in data) {
var charName = data[i].name;
var imgName = data[i].image;
var id = data[i].id;
charNamesArray.push(charName);
}
});
var charNames = document.getElementsByClassName('char-names');
for(var i = 0;i < charNamesArray.length;i++){
charNames[i].innerHTML(charNamesArray[i]);
}
最好动态生成这些元素,因为 JSON 对象的条目可以是任意长度。所以你的 JS 应该是:
$.getJSON('people.json', function(data) {
// the container
$container = $('#container');
// $container.empty(); // if you want to empty it first
for (var i in data) {
var charName = data[i].name;
var imgName = data[i].image;
var id = data[i].id;
var $name = $('<p>' + charName + '</p>').addClass('faces');
var $img = $('<img src="' + imgName + '"/>').addClass('char-names');
var $div = $('<div></div>').append($img)
.append($name)
.addClass('faces-container');
$container.append($div);
}
});
并且您的 HTML 应该有一个空元素(将动态填充):
<div id='container'></div>
我正在尝试定位 18 个 $('.char-names') 元素并使用本地 JSON 文件中的名称动态填充。 3 个控制台日志显示 18 个不同的 id、charName、ingName,因此数据正在链接。它只是在每个插槽中使用相同的名称填充 $('.char-names') 。我在这里拔头发。
$.getJSON('people.json', function(data) {
for (var i in data) {
var charName = data[i].name;
var imgName = data[i].image;
var id = data[i].id;
console.log(id);
console.log(charName);
console.log(imgName);
$('.char-names').text(charName);
}
});
HTML...
<div class="faces-container">
<img src="img/face1.jpg" class="faces">
<p class="char-names"></p>
</div>
初学者不要在数组上使用 for in
。
如果 $('.char-names')
元素的索引与数组数据相同,则可以使用它们的索引
$.getJSON('people.json', function(data) {
var $charNames = $('.char-names');
$.each(data, function(i, obj){
$charNames.eq(i).text(obj.name);
});
});
如果索引不相同,则说明所提供的详细信息不足
也许是这样的。我没有测试过
$.getJSON('people.json', function(data) {
var charNamesArray = [];
for (var i in data) {
var charName = data[i].name;
var imgName = data[i].image;
var id = data[i].id;
charNamesArray.push(charName);
}
});
var charNames = document.getElementsByClassName('char-names');
for(var i = 0;i < charNamesArray.length;i++){
charNames[i].innerHTML(charNamesArray[i]);
}
最好动态生成这些元素,因为 JSON 对象的条目可以是任意长度。所以你的 JS 应该是:
$.getJSON('people.json', function(data) {
// the container
$container = $('#container');
// $container.empty(); // if you want to empty it first
for (var i in data) {
var charName = data[i].name;
var imgName = data[i].image;
var id = data[i].id;
var $name = $('<p>' + charName + '</p>').addClass('faces');
var $img = $('<img src="' + imgName + '"/>').addClass('char-names');
var $div = $('<div></div>').append($img)
.append($name)
.addClass('faces-container');
$container.append($div);
}
});
并且您的 HTML 应该有一个空元素(将动态填充):
<div id='container'></div>