0

嗨,我对下一个代码有疑问:

javascript

var cadena="[";


    $('.box').each(function(){

            var clase=$(this).attr("class");          
            var id_t=$(this).attr("id");

            if(clase=="box todo"){
               var status_t="todo";
                //alert('hola');
            }
            if(clase=="box inprocess"){
                var status_t="inprocess";
                //alert('hola');
            }
            if(clase=="box testing"){
                var status_t="testing";
                //alert('hola');
            }
            if(clase=="box done"){
                var status_t="done";
                //alert('hola');
            }

            //alert('tarea es: '+id_t+ ' con clase '+status_t);

            var objeto={};
            objeto["id"]=id_t;
            objeto["status"]=status_t;


            var json = JSON.stringify(objeto);

            //alert(json);
            cadena=cadena+json;

    });



    cadena= cadena+"]";
 alert('cadena Json '+cadena);

我得到了这个链 Json,但是这个链是错误的,因为它需要与 (,) 分开我不知道这样做

[
{"id":"1","status":"1"}
{"id":"2","status":"2"}
{"id":"3","status":"1"}
]

我需要一个有效的链Json,我想要类似的东西

[
{"id":"1","status":"1"},
{"id":"2","status":"2"},
{"id":"3","status":"1"}
]

任何将我带到这个结果的想法我都会非常感激。谢谢!!!

4

2 回答 2

4

你这样做是错的。而不是下面的行,

var cadena = "["

尝试

 //to init array 
  var cadena = []; 

而且,而不是这条线,

cadena = cadena+json;

尝试这个

cadena.push(json);

删除这一行:

cadena= cadena + "]";

有关更多信息,请参阅此问题:如何将某些内容附加到数组?.

您可以将代码简化为:

 $('.box').each(function () {

     //taking out the second element of the class and assigning it directly to status_t variable
     var status_t = $(this).attr("class").split(" ")[1];
     var id_t = $(this).attr("id");

     var objeto = { "id" : id_t, "status" : status_t};

     cadena.push(json);
 });
于 2013-07-04T00:05:46.900 回答
0

我想我会这样做:

var cadena = $('.box').map( function( e ) {
    var $e = $(e);
    return {
        id: $e.attr('id'),
        status: $e.attr('class').replace( /^box /, '' )
    }
});

var json = JSON.stringify( cadena );
console.log( json );

我没有办法测试它,但除非我错过了什么,否则它应该可以工作。如果您发布一些示例 HTML,我可以确保它是正确的。

于 2013-07-04T00:15:38.350 回答