2016-11-22 2 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 для первого div, 2 для второго div и т. Д. – 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

Зачем нужно это делать? Можете ли вы объяснить свое решение и почему изменили то, что вы изменили? –

+0

Что делать, если я имею дело с более сложным json, и этот json может быть доступен только .each? Я имею в виду, это график facebook, где я получаю данные из нескольких 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>

Смежные вопросы