【发布时间】:2017-04-03 15:56:34
【问题描述】:
我正在尝试使用我拥有的一些数据对象在 jQuery 中创建一个动态表。
JSFiddle 是我想要实现的一个示例
我有以下数据对象
这用于将数据库数据(fieldMapping)映射到表格上正确的单元格名称
[{
"input_source_type":"input",
"field_id":"100786",
"field_name":"name",
"input_id":{"List Table":"Label 1 ref"},
"input_ref":"Label 1 ref"
},
{
"input_source_type":"input",
"field_id":"100787",
"field_name":"desc",
"input_id":{"List Table":"Label 2 ref"},
"input_ref":"Label 2 ref"
},
{
"input_source_type":"input",
"field_id":"100788",
"field_name":"desc",
"input_id":{"List Table":"Label 3 ref"},
"input_ref":"Label 3 ref"
},
{
"input_source_type":"input",
"field_id":"100786",
"field_name":"name",
"input_id":{"List Table":"Label 4 ref"},
"input_ref":"Label 4 ref"
},
{
"input_source_type":"input",
"field_id":"100787",
"field_name":"desc",
"input_id":{"List Table":"Label 5 ref"},
"input_ref":"Label 5 ref"
},
{
"input_source_type":"input",
"field_id":"100788",
"field_name":"desc",
"input_id":{"List Table":"Label 6 ref"},
"input_ref":"Label 6 ref"
}]
这是表格数据(字段) - 基本上每行最多可以有 2 列。下面有一个数组列表,每个数组都是一行
[
["Label 1 ref"],
["Label 2 ref","Label 3 ref"],
["Label 4 ref","Label 5 ref"],
["Label 6 ref"]
]
每个 DataStrucutre 都是通过数据库调用以及 ID 和字段创建的。这些字段是从上面的 fieldMapping 对象上的 field_name 键链接的。 这是数据变量,一个基本的示例图像是here
这是我的示例代码
for (var i in data)
{
if (row instanceof DataStructure)
{
for (var i in fields)
{
var fieldRef = fields[i];
for (var f in this.fieldMapping)
{
if (this.fieldMapping[f].input_id instanceof Object)
{
var colspan = 1;
if(fieldRef.length == 1)
colspan = 2;
var fieldName = '';
for (var x in this.fieldMapping[f].input_id)
{
fieldName = x;
}
var fName = this.fieldMapping[f].field_name;
if (fName == "ID")
fName = "id";
var cellValue = row.getValue(fName);
if (cellValue instanceof DataVariant)
{
if(colspan == 1)
{
if(fieldRef[0] && fieldRef[1])
{
html += '<tr>';
for (var r in fieldRef)
{
if(fieldRef[r] == this.fieldMapping[f].input_id[fieldName])
{
html += '<td>'+cellValue.getData()+'</td>';
}
}
html += '</tr>';
}
}
else if (colspan == 2)
{
if (fieldRef == this.fieldMapping[f].input_id[fieldName])
{
html += '<tr>';
html += '<td colspan="2">'+cellValue.getData()+'</td>';
html += '</tr>';
}
}
}
}
}
}
}
}
}
我试图得到上面JSFiddle 的结果,但我不断得到以下结果 (Fiddle2)
<table>
<tr>
<td colspan="2">Title info</td>
</tr>
<tr>
</tr>
<tr>
<td>This is the main body of the map info window component.</td>
</tr>
<tr>
<td>54.991987, -1.522710</td>
</tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr>
<td>This is the title for the second map component</td>
</tr>
<tr>
<td>This is the main body of the map info window component.</td>
</tr>
<tr></tr>
<tr>
<td colspan="2">54.991987, -1.522710</td>
</tr>
</table>
我知道这是因为我使用的循环数量导致了问题。我怎样才能改变它以使我得到想要的结果?
任何正确方向的帮助或指导将不胜感激
谢谢
【问题讨论】:
标签: jquery html loops html-table