<table> 如何使用 jQuery 从数组数组动态生成时排除 ID 列



我正在使用jQuery进行ajax调用,以从ColdFusion服务器获取数据。服务器查询数据库表并以二维数组的形式返回多个记录。然后,jQuery 代码在<table>中(动态(显示数组值。

问题是我不想显示其中一个字段:CustomerID.相反,我想提取该值并使用它来创建指向另一个页面的超链接。但是,我不确定如何解决这个问题。我想过使用.map.filter等,但似乎没有任何效果,我处于停滞状态。有什么想法吗?

我希望这是有道理的。如果我需要修改,我很乐意这样做。感谢任何和所有的帮助。谢谢。

数据库表列:

  • 非活动帐户
  • 客户代码
  • 客户
  • Contact_Person
  • 电话
  • 传真号码
  • 电子邮件地址
  • 客户编号

以下是在Chrome中使用console.log(my2Darray)的2D阵列的外观

[Array(8)]
0: Array(8)
0: false
1: "tstI"
2: "test Inc"
3: "John Doe"
4: "some phone number"
5: "some fax number"
6: "test@aol.com"
7: 1
length: 8

目前,<table>的设置方式是:

<table id="response" border="1">
<tbody><tr>
<th>Inactive</th>
<th>Company Code</th>
<th>Company Name</th>
<th>Company Liasion</th>
<th>Telephone</th>
<th>Fax</th>
<th>Email</th>
</tr>
<tr>
<td>false</td>
<td>tstI</td>
<td>test Inc</td>
<td>John Doe</td>
<td>some telephone number</td>
<td>some fax number</td>
<td>test@aol.com</td>
<td>1</td>
</tr>
</tbody>
</table>

j查询代码:

$.ajax({
type: 'POST',
url: 'Search.cfc',
data: {
method: 'custCodeData',
custCode: $('#custCode').val()
},
dataType: 'JSON',
success: function (data) {
var array = data.DATA;
$("#response tr:not(:first)").remove();
for (var i = 0; i < array.length; i++) {
var newRow = table.insertRow();
for (var j = 0; j < array[i].length; j++) {
var cell = newRow.insertCell(j);
cell.innerHTML = array[i][j];
console.log(array);
}
}
$("#response tr:contains(true)").css({"background-color": "#ff0000", "color": "#FFF"});
}
})

稍微修改一下你的 JQuery 代码:

$.ajax({
type: 'POST',
url: 'Search.cfc',
data: {
method: 'custCodeData',
custCode: $('#custCode').val()
},
dataType: 'JSON',
success: function (data) {
var array = data.DATA;
$("#response tr:not(:first)").remove();
for (var i = 0; i < array.length; i++) {
var newRow = table.insertRow();
for (var j = 0; j < array[i].length; j++) {
var cell = newRow.insertCell(j);
/***** Modification starts from here *****/
/*If it's customerID of this instance*/
if(j==7){
//make your hyperlink, e.g, 
var link='https://www.customers#'+array[i][j]+'.com';
cell.innerHTML = link;
}else{
cell.innerHTML = array[i][j];
}                
/***** Modification ends here *****/
}
}
$("#response tr:contains(true)").css({"background-color": "#ff0000", "color": "#FFF"});
}
})

推理:

我想您对 2D 数组的工作原理有点困惑,在您的情况下,双循环内部存在array[i][j],外部循环遍历所有客户,内部循环遍历该客户i的列j的数据。希望这对您理解代码有所帮助。

对不起我的英语。

由于您使用的是大小为 8 的数组,并且您知道位置 7(索引 7,从 0 到 7(是公司 ID,因此您可以将其从循环中排除,如下所示

for (var i = 0; i < array.length; i++) {
var newRow = table.insertRow();
for (var j = 0; j < array[i].length; j++) {
if(j < 7) {
var cell = newRow.insertCell(j);
cell.innerHTML = array[i][j];
console.log(array);
}
if(j === 7) {
cell.innerHTML = `<a href='edit/${array[i][j]}'>go to compay</a>`
}
}
}

我希望这会对您有所帮助

最新更新