设置动态生成表的ID时遇到问题
问题描述:
没关系。这是我的错误。此代码工作正常。设置动态生成表的ID时遇到问题
我有一个应该创建和填充表的函数。我也试图设置一些列的id元素,但我有的功能不工作,我似乎无法弄清楚为什么。
这是我的代码:
HTML:
<div id="result_table">
<table border="0" cellspacing="3" cellpadding="3" id="summaryTable" class="tablesorter table table-striped">
<thead>
<tr style="font-weight: bold; text-align: center;">
<th>Well ID</th>
<th>Dominant Gene</th>
<th>%</th>
<th>Secondary Gene</th>
<th>%</th>
<th>No. of Reads that Mapped</th>
<th>No. of Mutations</th>
<th>Mutation Information</th>
<th>View</th>
</tr>
</thead>
<tbody id="summaryBody">
</tbody>
</table>
</div>
的Javascript:
function structureTable(test){
if (kiloseqResult==null){
throw "Error: no databse defined"
};
document.getElementById("summaryTable").style.visibility="visible";
kiloseqDatabase = JSON.parse(kiloseqResult);
var table = document.getElementById("summaryBody");
for (i=0;i<kiloseqDatabase.length;i++){
var row = table.insertRow(i);
var kiloseqKeys = Object.keys(kiloseqDatabase[i])
var keyLength = Object.keys(kiloseqDatabase[i]).length;
// Painstakingly setting up the cells...
var cell = row.insertCell(0);
cell.innerHTML = kiloseqDatabase[i]['id']
var cell = row.insertCell(1);
cell.innerHTML = kiloseqDatabase[i]['gene1'].substr(5)
var cell = row.insertCell(2);
cell.innerHTML = parseFloat(kiloseqDatabase[i]['percent1']).toFixed(2)
var cell = row.insertCell(3);
if (kiloseqDatabase[i]['gene2']=="None"){
cell.innerHTML = "None"
} else {
cell.innerHTML = kiloseqDatabase[i]['gene2'].substr(5)
}
var cell = row.insertCell(4);
cell.innerHTML = parseFloat(kiloseqDatabase[i]['percent2']).toFixed(2)
var cell = row.insertCell(5);
cell.innerHTML = kiloseqDatabase[i]['count']
var cell = row.insertCell(6);
cell.innerHTML = ""
var cell = row.insertCell(7);
cell.innerHTML = ""
var cell = row.insertCell(8);
cell.innerHTML = ""
};
$(document).ready(function()
{
$("#summaryTable").tablesorter(
{sortList: [[0,0], [1,0]]}
);
}
);
for (i=0;i<kiloseqDatabase.length;i++){
document.getElementById("summaryBody").rows[i].cells[6].id = "test";
};
};
kiloseqResult是检查是否kiloseqDatabase填充的变量。 kilqqDatabase包含应该填充表的信息。
奇怪的是,设置ID的for循环(是的,我试过在第一个for循环中尝试包括这个,但当它没有工作时试图分解它)在我运行时很好我的Chrome控制台。但它似乎并没有在这个功能中起作用。
任何帮助将不胜感激。谢谢!
答
您是否尝试将您的ID分配逻辑放在document.ready范围内?您无法为元素分配ID或在DOM呈现之前将其从DOM中选中:
$(document).ready(function()
{
$("#summaryTable").tablesorter(
{sortList: [[0,0], [1,0]]}
);
for (i=0;i<kiloseqDatabase.length;i++){
document.getElementById("summaryBody").rows[i].cells[6].id = "test";
};
}
);
这看起来似乎不起作用。我也想知道为什么我无法设置.id元素,当我可以设置.innerHTML时,即使它不在document.ready – Gina 2014-11-04 18:39:42
什么是不工作? ID分配或选择器?尝试(在for循环中)$(“#summaryBody”)。rows [i] .cells [6] .prop(“id”,“test”+ i.toString()); – 2014-11-04 18:59:57
Eep。这是我的错误 - 事实证明我一直在加载错误的文件。我原来的代码(以及你的建议)都很好。谢谢你,给你造成的不便深表歉意! – Gina 2014-11-04 19:03:17