2016-11-22 61 views
0

我挣扎着两个循环。我想要实现的是匹配相应的对象来纠正每个迭代。两个嵌套对象和div选择器的每个循环

有我的小提琴。在每个div中都有相同的输出,它应该是1,2,3而不是3,3,3。

jQuery('.get-total-numbers').each(function(i, e) { 
 
    var $el = jQuery(e); 
 

 
    var json = '["1","2","3"]'; 
 
    var arr = $.parseJSON(json); 
 

 
    myjson = json; 
 
    json2 = JSON.parse(json); 
 
    jQuery.each(json2, function(index, e) { 
 
    console.log(e); 
 
    $el.text(e); 
 

 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="get-total-numbers"> 
 

 
</div> 
 

 
<div class="get-total-numbers"> 
 

 
</div> 
 

 
<div class="get-total-numbers"> 
 

 
</div>

+0

谢谢你的编辑@Barmar – Matt

+0

你没有做任何事情来匹配相应的元素。内循环只是贯穿整个数组,用数组中的每个项目替换当前的DIV。所以当它完成时,DIV包含数组的最后一个元素。 – Barmar

+0

以为这是一个很好的开始。我想我的输出为第一格为1,第二格为2等。 – Matt

回答

2

试试这个:

jQuery('.get-total-numbers').each(function(i, e) { 
 
    var $el = jQuery(e); 
 

 
    var json = '["1","2","3"]'; 
 
    var arr = $.parseJSON(json); 
 

 
    myjson = json; 
 
    json2 = JSON.parse(json); 
 
    $el.text(json2[i]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="get-total-numbers"> 
 

 
</div> 
 

 
<div class="get-total-numbers"> 
 

 
</div> 
 

 
<div class="get-total-numbers"> 
 

 
</div>

+0

为什么OP应该这样做?你能解释一下你的解决方案吗?为什么改变你的改变? –

+0

如果我正在处理更复杂的json,而且这个json只能被.each访问呢?我的意思是,这是我从多个URL获取数据的图表。我不能(或者我不知道如何)从复杂的JSON中获取相应的数据。 – Matt

1

你的代码仅仅是覆盖与阵列的每个元素的每个DIV,不只是把在匹配元素每个DIV。

您不需要内部jQuery.each循环。如果你想要数组的相应元素,只需使用arr[i]

var json = '["1","2","3"]'; 
 
var arr = $.parseJSON(json); 
 

 
jQuery('.get-total-numbers').each(function(i, e) { 
 
    var $el = jQuery(e); 
 
    $el.text(arr[i]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="get-total-numbers"> 
 

 
</div> 
 

 
<div class="get-total-numbers"> 
 

 
</div> 
 

 
<div class="get-total-numbers"> 
 

 
</div>