You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何将数组元素按索引对应追加到同class的HTML Div中

解决数组元素与对应索引Div的内容追加问题

嘿,我来帮你搞定这个小问题~ 先看看你代码里的问题出在哪:

你外层循环数组的时候,内层又用$('.appendDiv').each遍历了所有目标div,而且最关键的是——你用$('.appendDiv').append()的时候,是选中了所有带有appendDiv类的元素,不管当前的index是否匹配。这就导致每次循环都会给所有div追加内容,最后每个div都被加了两次名字,才出现了错误的结果。

正确的解决方案有两种,挑你喜欢的来用:

方法一:通过索引直接定位对应Div(用eq())

先获取所有目标div的集合,然后循环数组时,用索引直接拿到对应位置的div进行追加:

var values = [
  { 'name': "john" },
  { 'name': "doe" }
]
// 先缓存所有目标div,避免重复DOM查询
var targetDivs = $('.appendDiv');

for (var i = 0; i < values.length; i++) {
  // 先判断索引是否在div集合的范围内,避免数组长度比div多的情况
  if (i < targetDivs.length) {
    var name = values[i].name;
    // 用eq(i)精准获取对应索引的div,再追加内容
    targetDivs.eq(i).append('<p>' + name + '</p>');
  }
}

方法二:遍历Div集合,对应数组索引取值

反过来,直接遍历div集合,用每个div的索引去数组里取对应的值:

var values = [
  { 'name': "john" },
  { 'name': "doe" }
]

$('.appendDiv').each(function(index) {
  // 拿到当前索引对应的数组元素,先判断是否存在(防止数组长度比div少)
  var currentValue = values[index];
  if (currentValue) {
    // $(this)就是当前遍历到的div,直接追加内容
    $(this).append('<p>' + currentValue.name + '</p>');
  }
});

为什么原来的代码会出错?

举个例子:

  • 当外层循环i=0时,内层each遍历到第一个div(index=0),你执行了$('.appendDiv').append()——这会给所有appendDiv类的div都追加john;
  • 当外层循环i=1时,内层each遍历到第二个div(index=1),你又执行了$('.appendDiv').append()——这会给所有div再追加doe;
  • 最终每个div都有了两个名字,就出现了你看到的错误结果。

用上面两种方法修改后,就能实现数组[0]对应Div[0]、数组[1]对应Div[1]的效果,得到你期望的正确输出啦~

内容的提问来源于stack exchange,提问作者user13460509

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:17:09