#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.