2014-10-28 4 views
1

Как добавить индекс и значение для объекта, ниже мой код, я попытался добавить индекс и значение в цикле, но он показывает ошибку undefined is not an object ($data.file_list_image.i.sequence), почему и как ее решить?Как добавить индекс и значение к объекту?

пытался получить данные JSON и отправить на стороне сервера

желание данные

$data = {file_list_image: {0: {sequence: 1, intro: }, 1: {sequence: 1, intro: }, }} 

JS

var $el = $content_list.find('.content-list-gallery-file-list'); 
var file_length = $el.length; 
var file_image_length = 0; 
var file_embed_youtube_length = 0; 

for (var i = 0; i < file_length; i++) { 
    if ($el.eq(i).attr('data-type') == 0) { // console.log('img'); 
     file_image_length++; 
    } else if ($el.eq(i).attr('data-type') == 1) { // console.log('video'); 
     file_embed_youtube_length++; 
    } 
} 

var $data = {}; 


for (var i = 0; i < file_image_length; i++) { 
    var $file_list = $el.filter(function() { 
     return $(this).attr('data-type') == 0 && $(this).attr('data-tmp-id') == i; 
    }); 

    var sequence = $file_list.attr('data-sequence'); 
    var intro = $file_list.find('.intro textarea').val(); 


    $data.file_list_image.i.sequence = sequence; 
    $data.file_list_image.i.intro = intro; 
} 

console.log($data); 

HTML

<div class="content_list"> 
    <div class="content-list-gallery-file-list" data-type="0" data-tmp-id="1" data-sequence="0"> 
    <div class="intro"><textarea></textarea></div> 
    </div> 
    <div class="content-list-gallery-file-list" data-type="0" data-tmp-id="0" data-sequence="1"> 
    <div class="intro"><textarea></textarea></div> 
    </div> 
    <div class="content-list-gallery-file-list" data-type="1" data-tmp-id="2" data-sequence="2"> 
    <div class="intro"><textarea></textarea></div> 
    </div> 
</div> 
+1

Является ли 'file_list_image' массивом объектов? Разделите структуру данных, с которыми работаете. Некоторый пример даст лучшую ясность. Если, однако, это массив объектов, попробуйте выполнить '$ data.file_list_image [i] .sequence'. Кроме того, я не понимаю, почему вы называете переменную 'data' как' $ data'. Это заблуждение. –

+0

Пожалуйста, полностью разместите свой код –

+0

Спасибо за ответ, thats 'весь мой код, я попытался сделать такой вид данных, как {file_list_image: {0: {sequence: 1, intro: letter}, 1: {sequence: 0,}} – vibskov

ответ

1

Пример того, как это можно сделать путем инициализации объекта pr operties в правильное время:

Fiddle example

var $data = {}; 
$data.file_list_image = {}; 
for (var i = 0; i < 5; i++) 
{ 
    $data.file_list_image[i] = {}; 
    $data.file_list_image[i]["sequence"] = "seq" + i; 
    $data.file_list_image[i]["intro"] = "in" + i; 
} 
console.log($data); 

Кстати, $data.file_list_image[i]["sequence"] (то же самое с intro) также может быть $data.file_list_image[i].sequence

Fiddle example with original HTML.

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