JavaScript-如何使Html表可编辑

时间:2014-07-04 17:20:37

标签: javascript

我有一个使用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>";

但它无效

2 个答案:

答案 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>";
}