社区首页 >问答首页 >使用jquery遍历json数据

使用jquery遍历json数据
EN

Stack Overflow用户
提问于 2019-11-04 14:30:54
回答 1查看 27关注 0票数 1

当我警告下面例子中的输出时,我得到了正确的输出,但是当我console.log输出时,我得到:Number {}

代码语言:javascript
代码运行次数:0
复制
"width": [ 25, 50, 75, 100 ],

jQuery.each(width, function() {
  new_width = this;
  console.log(new_width);
  alert(new_width);
  document.querySelectorAll('#source').forEach(function (element, index) {
    element.style.width = new_width;
  });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 14:36:24

这个问题是因为您正在使用jQuery.each()遍历数组。当通过this访问时,您会收到一个Number对象,而不是一个整数值,因此{}会输出到日志中。有几种方法可以解决这个问题:

1)使用传递给函数的参数,而不是this引用:

代码语言:javascript
代码运行次数:0
复制
var foo = { "width": [ 25, 50, 75, 100 ] }
jQuery.each(foo.width, function(i, value) {
  console.log(value);
});
代码语言:javascript
代码运行次数:0
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

2)对object使用toString()valueOf()。附注,您问题中的alert()之所以有效,是因为它在幕后调用了toString()

代码语言:javascript
代码运行次数:0
复制
var foo = { "width": [ 25, 50, 75, 100 ] }
jQuery.each(foo.width, function() {
  console.log(this.toString());
  console.log(this.valueOf());
});
代码语言:javascript
代码运行次数:0
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

3)不要使用jQuery遍历普通的值数组。使用forEach()循环:

代码语言:javascript
代码运行次数:0
复制
var foo = { "width": [ 25, 50, 75, 100 ] }
foo.width.forEach(function(value) {
  console.log(value);
});
代码语言:javascript
代码运行次数:0
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

我更喜欢后一种方法,但它们中的任何一种都可以工作。

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

https://stackoverflow.com/questions/58695516

复制
相关文章

相似问题

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