首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用jQuery在html元素中添加对象值?

如何用jQuery在html元素中添加对象值?
EN

Stack Overflow用户
提问于 2020-04-09 22:24:27
回答 3查看 129关注 0票数 0

我一直试图在多个div元素中添加一个对象值,但我很难得到预期的行为。

这是我的代码:

代码语言:javascript
复制
obj = {
  valeur1: "text1",
  valeur2: "text2",
  valeur3: "text3",
  valeur4: "text4"
}

$('div').each(function(i) {
  $.each(obj, function(index, value) {
    if (value in $('div')) {
      return
    } else {
      $('div').text(value);
    }
  })
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>

我不明白为什么我总是得到:

代码语言:javascript
复制
text4
text4
text4
text4

请你解释一下我的算法有什么问题吗?

非常感谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-09 22:51:18

代码语言:javascript
复制
var obj = [
  "text1",
  "text2",
  "text3",
  "text4"
]

console.log(obj.length);

$('div').each(function(i) {
  this.innerHTML = obj[i];
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>

您使用的是上面的型号吗?您可以很容易地声明一个字符串数组,并像我演示的那样迭代它。

票数 0
EN

Stack Overflow用户

发布于 2020-04-09 22:36:41

你不需要嵌套循环。使用主循环中的索引获取属性的相应元素。

您应该设置$(this).text(),而不是$('div').text(),因为后者设置的是所有DIVs的文本,而不是循环的当前元素。

代码语言:javascript
复制
obj = {
  valeur1: "text1",
  valeur2: "text2",
  valeur3: "text3",
  valeur4: "text4"
}

$('div').each(function(i) {
  $(this).text(obj['valeur' + (i+1)])
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>

票数 0
EN

Stack Overflow用户

发布于 2020-04-09 22:41:16

你在循环中循环。因此,您输入的任何值都会被覆盖,直到最后一个循环。

一种修复方法,如下所示:

代码语言:javascript
复制
$(function() {
  var obj = {
    valeur1: "text1",
    valeur2: "text2",
    valeur3: "text3",
    valeur4: "text4"
  }

  var i = 0;

  $.each(obj, function(key, value) {
    $("div").eq(i++).html(value);
  });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>

在本例中,迭代对象本身。因为$.each()将给我们keyvalue对,所以我们可以设置一个在循环中使用的index变量。我们可以使用<div>.eq()为目标。

另一个是这样的:

代码语言:javascript
复制
$(function() {
  var obj = {
    valeur1: "text1",
    valeur2: "text2",
    valeur3: "text3",
    valeur4: "text4"
  }

  $("div").each(function(i, el) {
    var k = Object.keys(obj);
    $(el).html(obj[k[i]]);
  });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<div></div>
<div></div>
<div></div>

这一个,我们迭代元素。这次我们得到了一个indexelement对。因为我们希望从对象中获得特定的匹配元素,所以我们可以创建一个键数组并在循环中使用每个键。

你选的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61131188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档