JavaScript-Как сделать таблицу Html редактируемой

#javascript

#javascript

Вопрос:

У меня есть функция создания таблицы из файла .csv с использованием JavaScript. Я хочу сделать редактируемым последний столбец таблицы. Часть этой функции, в которой генерируется таблица, является

 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>";
  

но это не работает

Ответ №1:

Я думаю, вам следует сказать во внутреннем цикле:-

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

Ответ №2:

Я бы предложил, на первый взгляд:

 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> , в отличие от создания нового, родственного элемента paragraph.

Ссылки:

Комментарии:

1. Извините, я забыл упомянуть, что я работаю над приложением Windows 8.1, используя VS 2013, когда я использовал ваш ответ, возникло следующее исключение. 0x800c001c — ошибка времени выполнения JavaScript: не удается добавить динамический контент. Скрипт попытался внедрить динамическое содержимое или элементы, ранее измененные динамически, что может быть небезопасно. Например, использование свойства innerHTML для добавления скрипта или искаженного HTML приведет к созданию этого исключения. Используйте метод toStaticHTML для фильтрации динамического содержимого или явно создавайте элементы и атрибуты с помощью такого метода, как createElement.