JavaScript如何使Html表可编辑

JavaScript如何使Html表可编辑,javascript,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++) { Outp

我有一个使用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>";
}
for(变量i=0;i
我试过了

OutputTableRows += "<td>" + "<p contenteditable="true">" + CSVValues[j] + "<p>" + "</td>";
OutputTableRows+=”+”

“+csv值[j]+”“+”;


但它不起作用

乍一看,我建议:

OutputTableRows += "<td>" + "<p" + (j === (CSVValues.length - 1) ? " contentEditable" : "") + ">" + CSVValues[j] + "</p>" +"</td>";
OutputTableRows+=''++''+csv值[j]+''

“+”;
当然,相关部分是:

"<p" + (j === (CSVValues.length - 1) ? " contentEditable" : "") + ">"
“”
如果
j
等于
CSVValues
的长度减1,那么可以合理地假设这必须是
for
循环的最后一次迭代,因此这是应该具有
contentEditable
属性的行,否则不应该(并且必须是循环的早期迭代)

另外,请注意更改的

(来自原始
),它关闭了已打开的
,而不是创建新的同级段落元素

参考资料:


我认为你应该在内心循环中说:-

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>";
}
if(j==CSVValues.length-1){
tableRow='';
tableRow=tableRow.replace('VALUE',csv值[j]);
OutputTableRows+=tableRow;
}
否则{
输出行+=“”+”“+CSV值[j]+”“+”;
}

很抱歉,我忘了提及我正在使用VS 2013开发Windows 8.1应用程序,在使用您的答案时出现以下异常。0x800c001c-JavaScript运行时错误:无法添加动态内容。脚本试图注入以前动态修改的可能不安全的动态内容或元素。例如,使用innerHTML属性添加脚本或格式错误的HTML将生成此异常。使用toStaticHTML方法过滤动态内容,或使用createElement等方法显式创建元素和属性。