如何格式化 JavaScript 生成的 HTML 代码?
How to format JavaScript generated HTML code?
我正在尝试制作一个可以从传递的数据中生成 table 的函数。数据应采用以下格式:
let tableContent = [
[
{
type: "td",
content: "Hello!",
},
],
[
{
type: "td",
content: "Hello!",
},
],
];
这里整个数组是一个table,里面的数组是行,里面的对象是行里面每个单元格的数据。
问题是当我对这个数据使用这个函数时:
function makeTable(tableArray) {
//Entire Table
let tableTemplate;
let tableContent = "";
//row level variables
let rowTemplate;
let rowContent = "";
//cell level variables
let cellType;
let cellContent;
let cellTemplate;
//running function for each row
tableArray.forEach((row) => {
//running function for each cell
row.forEach((cell) => {
cellType = cell.type || "td";
if (cellType !== "td" && cellType !== "th")
return console.error(
`Error: The type of a cell must be either "td" or "th" you passed "${cellType}"!`
);
cellContent = cell.content;
cellTemplate = `<${cellType}>${cellContent}</${cellType}>`;
rowContent += cellTemplate;
});
rowTemplate = `<tr>${rowContent}</tr>`;
tableContent += rowTemplate;
rowContent = ""
});
tableTemplate = `<table>${tableContent}</table>`;
return tableTemplate;
}
//this function outputs:
//<table><tr><td>Hello!</td></tr><tr><td>Hello!</td></tr></table>
//if used on the above data
table 形成一行。我希望生成的代码缩进得很好并且易于阅读。我知道这并不重要,因为该函数的主要功能是生成 table 而不是代码。但是为了更容易理解生成的代码,我希望它是可读的。我的问题是如何将缩进应用于生成的代码?
感谢阅读我的查询!
您可以简单地使用 \t
制表符缩进(如果您愿意,也可以使用几个空格)和 \r\n
换行符。
例如这样的事情:
function makeTable(tableArray) {
//Entire Table
let tableTemplate;
let tableContent = "";
//row level variables
let rowTemplate;
let rowContent = "";
//cell level variables
let cellType;
let cellContent;
let cellTemplate;
//running function for each row
tableArray.forEach((row) => {
//running function for each cell
row.forEach((cell) => {
cellType = cell.type || "td";
if (cellType !== "td" && cellType !== "th")
return console.error(
`Error: The type of a cell must be either "td" or "th" you passed "${cellType}"!`
);
cellContent = cell.content;
cellTemplate = `\t\t<${cellType}>${cellContent}</${cellType}>\r\n`;
rowContent += cellTemplate;
});
rowTemplate = `\t<tr>\r\n${rowContent}\t</tr>\r\n`;
tableContent += rowTemplate;
rowContent = ""
});
tableTemplate = `<table>\r\n${tableContent}</table>`;
return tableTemplate;
}
let tableContent = [
[
{
type: "td",
content: "Hello!",
},
],
[
{
type: "td",
content: "Hello!",
},
],
];
console.log(makeTable(tableContent))
我正在尝试制作一个可以从传递的数据中生成 table 的函数。数据应采用以下格式:
let tableContent = [
[
{
type: "td",
content: "Hello!",
},
],
[
{
type: "td",
content: "Hello!",
},
],
];
这里整个数组是一个table,里面的数组是行,里面的对象是行里面每个单元格的数据。
问题是当我对这个数据使用这个函数时:
function makeTable(tableArray) {
//Entire Table
let tableTemplate;
let tableContent = "";
//row level variables
let rowTemplate;
let rowContent = "";
//cell level variables
let cellType;
let cellContent;
let cellTemplate;
//running function for each row
tableArray.forEach((row) => {
//running function for each cell
row.forEach((cell) => {
cellType = cell.type || "td";
if (cellType !== "td" && cellType !== "th")
return console.error(
`Error: The type of a cell must be either "td" or "th" you passed "${cellType}"!`
);
cellContent = cell.content;
cellTemplate = `<${cellType}>${cellContent}</${cellType}>`;
rowContent += cellTemplate;
});
rowTemplate = `<tr>${rowContent}</tr>`;
tableContent += rowTemplate;
rowContent = ""
});
tableTemplate = `<table>${tableContent}</table>`;
return tableTemplate;
}
//this function outputs:
//<table><tr><td>Hello!</td></tr><tr><td>Hello!</td></tr></table>
//if used on the above data
table 形成一行。我希望生成的代码缩进得很好并且易于阅读。我知道这并不重要,因为该函数的主要功能是生成 table 而不是代码。但是为了更容易理解生成的代码,我希望它是可读的。我的问题是如何将缩进应用于生成的代码?
感谢阅读我的查询!
您可以简单地使用 \t
制表符缩进(如果您愿意,也可以使用几个空格)和 \r\n
换行符。
例如这样的事情:
function makeTable(tableArray) {
//Entire Table
let tableTemplate;
let tableContent = "";
//row level variables
let rowTemplate;
let rowContent = "";
//cell level variables
let cellType;
let cellContent;
let cellTemplate;
//running function for each row
tableArray.forEach((row) => {
//running function for each cell
row.forEach((cell) => {
cellType = cell.type || "td";
if (cellType !== "td" && cellType !== "th")
return console.error(
`Error: The type of a cell must be either "td" or "th" you passed "${cellType}"!`
);
cellContent = cell.content;
cellTemplate = `\t\t<${cellType}>${cellContent}</${cellType}>\r\n`;
rowContent += cellTemplate;
});
rowTemplate = `\t<tr>\r\n${rowContent}\t</tr>\r\n`;
tableContent += rowTemplate;
rowContent = ""
});
tableTemplate = `<table>\r\n${tableContent}</table>`;
return tableTemplate;
}
let tableContent = [
[
{
type: "td",
content: "Hello!",
},
],
[
{
type: "td",
content: "Hello!",
},
],
];
console.log(makeTable(tableContent))