从json格式的表行发布数据

jay*_*Ann 2 html javascript jquery json data-retrieval

这与我的上一个问题有关(注意:我已经有了一些好的答案).我正在做一个会过滤的程序.我没有包含这个问题,因为我认为只要我知道如何从行中获取数据,我就更容易添加文本.但令我沮丧的是,我现在无法编写好的程序代码.

我目前正在使用这个javascript代码(感谢Awea):

$('#out').click(function(){    
   $('table tr').each(function(){
      var td = '';
      $(this).find('option:selected').each(function(){
         td = td + ' ' + $(this).text();
      });
      td = td + ' ' + $(this).find('input').val();
      alert(td);
   });
})
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何在行中的数据之前添加文本?例如,此代码警告第一行,如data1.1 data1.2 data1.3,

然后第二排像data2.1 data2.2 data2.3,

我希望我的输出显示如下

[ {"name":"data1.1","comparison":"data1.2", "value":"data1.3"}, {"name":"data2.1","comparison":"data2.2", "value":"data2.3"}, {"name":"data3.1","comparison":"data3.2", "value":"data3.3"} {.....and so on......}]

但在此之前,我想检查连续的所有FIRST单元格是否都不为空.如果它为空,则跳过该行然后进入下一行.

有人可以帮助我,请...

Gra*_*ham 5

根据 对上一个问题的回答,请参阅http://jsfiddle.net/evbUa/1/

一旦你将数据放在javascript对象中(dataArray在我的例子中),你可以按照我的例子自己编写JSON,但你会发现使用JSON-js这样的库要容易得多(参见本节).

// object to hold your data
function dataRow(value1,value2,value3) {
    this.name = value1;
    this.comparison = value2;
    this.value = value3;
}

$('#out').click(function(){   

    // create array to hold your data
    var dataArray = new Array();

    // iterate through rows of table
    for(var i = 1; i <= $("table tr").length; i++){

        // check if first field is used
        if($("table tr:nth-child(" + i + ") select[class='field']").val().length > 0) {

            // create object and push to array
            dataArray.push(    
                new dataRow(
                    $("table tr:nth-child(" + i + ") select[class='field']").val(),
                    $("table tr:nth-child(" + i + ") select[class='comp']").val(),
                    $("table tr:nth-child(" + i + ") input").val())
            );
        }

    }

    // consider using a JSON library to do this for you
    for(var i = 0; i < dataArray.length; i++){
        var output = "";
        output = output + '{"name":"data' + (i + 1) + '.' + dataArray[i].name + '",';
        output = output + '"comparison":"data' + (i + 1) + '.' + dataArray[i].comparison + '",';
        output = output + '"value":"data' + (i + 1) + '.' + dataArray[i].value + '"}';
        alert(output);
    }
})
Run Code Online (Sandbox Code Playgroud)