这与我上一次question有关( 注意:我已经得到了一些好的答案)。我正在做一个会过滤的程序。我没有包含这个问题,因为我认为只要我知道如何从行中获取数据,我就更容易添加文本。但令我沮丧的是,我现在无法编写好的程序代码。
我目前正在使用此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);
});
})
我的问题是:如何在行中的数据之前添加文本?例如,此代码警报
第一行,如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单元格是否都不为空。如果它为空,则跳过该行然后进入下一行。
是否有人可以帮助我,请...
答案 0 :(得分:5)
以my answer to your previous question为基础,请参阅http://jsfiddle.net/evbUa/1/
在javascript对象(我的示例中为dataArray
)中获取数据后,您可以根据我的示例自行编写JSON,但您会发现使用{{3 (请参阅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);
}
})
答案 1 :(得分:2)
这里有两件事你需要做。首先将数据放入对象数组中,然后获取字符串表示形式。
我没有对此进行过测试,但它应该让您了解该怎么做。
编辑请看一下我制作的这个JS-Fiddle示例。 http://jsfiddle.net/4Nr9m/52/
$(document).ready(function() {
var objects = new Array();
$('table tr').each(function(key, value) {
if($(this).find('td:first').not(':empty')) {
//loop over the cells
obj = {};
$(this).find('td').each(function(key, value) {
var label = $(this).parents('table').find('th')[key].innerHTML;
obj[label] = value.innerHTML;
});
objects.push(obj);
}
});
//get JSON.
var json = objects.toSource();
$('#result').append(json);
});
答案 2 :(得分:2)
var a = []; a [0] =“data1.1 data1.2 data1.3” a [1] =“data1.6 data1.2 data1.3” var jsonobj = {}; var c = [] for(var i = 0; i
警报(C); //它将给[“{”name“:”data1.1“,”comp ... 1.2“,”value“:”data1.3“}”,“{”name“:”data1.6“, “comp ... 1.2”,“value”:“data1.3”}“]
你必须包含来自JSON.stringify的函数库 https://github.com/douglascrockford/JSON-js/blob/master/json2.js
希望这会有所帮助