我有一个使用JavaScript从.csv文件创建表的功能。我想让表的最后一列可编辑。正在生成表的函数的一部分是
for (var i = 0; i < CSVLines.length; i++) {
OutputTableRows += "<tr>";
var CSVValues = CSVLines[i].split(",");
for (var j = 0; j < CSVValues.length; j++) {
OutputTableRows += "<td>" + "<p>" + CSVValues[j] + "<p>" + "</td>";
}
OutputTableRows += "</tr>";
}
我试过了
OutputTableRows += "<td>" + "<p contenteditable="true">" + CSVValues[j] + "<p>" + "</td>";
但它无效
答案 0 :(得分:0)
乍一看我建议:
OutputTableRows += "<td>" + "<p" + (j === (CSVValues.length - 1) ? " contentEditable" : "") + ">" + CSVValues[j] + "</p>" +"</td>";
当然,相关部分是:
"<p" + (j === (CSVValues.length - 1) ? " contentEditable" : "") + ">"
如果j
等于CSVValues
减去1的长度,那么可以合理地假设这必须是该for
循环的最后一次迭代,因此这是应该具有contentEditable
属性的行,否则它不应该(并且必须是循环的早期迭代)。
另外,请注意已更改的</p>
(来自原始<p>
),它会关闭已打开的<p>
,而不是创建新的兄弟段落元素。
参考文献:
答案 1 :(得分:0)
我认为你应该在内循环中说: -
if(j == CSVValues.length-1){
tableRow = '<td><input type="text" value="VALUE"/></td>';
tableRow = tableRow.replace('VALUE',CSVValues[j]);
OutputTableRows += tableRow;
}
else{
OutputTableRows += "<td>" + "<p>" + CSVValues[j] + "<p>" + "</td>";
}