【问题标题】:How to format JavaScript generated HTML code?如何格式化 JavaScript 生成的 HTML 代码?
【发布时间】:2023-03-22 15:42:01
【问题描述】:

我正在尝试制作一个可以从传递的数据生成表格的函数。数据应该是这种格式:

let tableContent = [
  [
    {
      type: "td",
      content: "Hello!",
    },
  ],
  [
    {
      type: "td",
      content: "Hello!",
    },
  ],
];

这里整个数组是一张表,里面的数组是行,里面的对象是行内每个单元格的数据。

问题是当我在这个数据上使用这个函数时:

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

表格由一行组成。我希望生成的代码缩进很好并且易于阅读。我知道这并不重要,因为该函数的主要功能是生成表而不是代码。但是为了更容易理解生成的代码,我希望它是可读的。我的问题是如何对生成的代码应用缩进?

感谢您阅读我的查询!

【问题讨论】:

  • \t 将创建一个标签,\r\n 将创建一个换行符
  • 我试着弄乱它们,但对于更复杂的表,这会搞砸
  • @Jamiec 基本上不适合我
  • 定义:不工作。你的意思是你试图将字符串输出到控制台,但你没有得到制表符/换行符?
  • 你知道Document.createElement()吗?它真的会帮助你。 developer.mozilla.org/en-US/docs/Web/API/Document/createElement

标签: javascript html html-table


【解决方案1】:

您可以简单地将\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))

【讨论】:

  • 我想我别无选择。我只是希望代码格式化由其他东西而不是手动完成。只是为了让我可以确认代码的格式始终正确,但仍然可以正常工作,非常感谢!
猜你喜欢
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多