如何将HTML字符串转换为表格?

时间:2019-10-30 02:50:29

标签: javascript html string flask html-table

我有一个存储为字符串的表主体对象。我尝试使用javascript将HTML表设置为该字符串,如下所示({{}}是因为我正在使用Flask来获取字符串):

方法1:

document.getElementsByTagName("tbody")[0].outerHTML= "{{tbody_string }}";

方法2:

document.getElementsByTagName("table")[0].outerHTML = '<table>' + "{{tbody_string }}" + '</table>'

方法3:

document.getElementsByTagName("table")[0].innerHTML = "{{tbody_string}}";

这些都不起作用。而是创建该表并将其存储为tbody_string作为实际文本内容,而不是将其视为html。我已经将这类结构和flask变量与其他HTML元素(例如input)一起使用,并且工作正常,但似乎不适用于表。有想法吗?

其他信息:

字符串如下:

'<tbody> <tr> <td>Name</td> <td> <input type="text" name="parameters_name" id="name" class="form-control"> </td> </tr> </tbody>'

此处简单地显示了引号,以表明它是一个字符串。

3 个答案:

答案 0 :(得分:0)

这是表格的javascript代码

var body = document.getElementsByTagName("body")[0];
 
 
  var ourTable     = document.createElement("table");
  var ourTableBody = document.createElement("tbody");
 
 
  for (var i = 0; i < 4; i++) {
 
    var row = document.createElement("tr");
 
    for (var j = 0; j <2; j++) {
 
 
      var cell = document.createElement("td");
      var cellText = document.createTextNode("cell in row "+i+", column "+j);
      cell.appendChild(cellText);
      row.appendChild(cell);
    }
 
 
    ourTableBody.appendChild(row);
  }
 
 
  ourTable.appendChild(ourTableBody);
 
  body.appendChild(ourTable);
 
  ourTable.setAttribute("border", "2");

答案 1 :(得分:0)

如果您的表主体对象存储为字符串(又名tbody_string)是类似于tbody_string = "<table><tr><th>table</th></td></table>"

的字符串

方法3应该可以正常工作

<html>
    <body>
        <table>
            <tr>
                <th>Replace this table</th>
            </tr>
        </table>
    </body>
    <script lang="javascript">
        const tbody_string = `
            <table>
                <tr>
                    <th>Table</th>
                </tr>
                <tr>
                    <td>this is replaced table</td>
                </tr>
            </table>`;
        document.getElementsByTagName('table')[0].innerHTML = tbody_string;       
    </script>
</html>

但是,如果您的tbody_string不是HTML标记文本,而是其他内容。 您需要以某种方式将其转换为HTML作为文本。如果它是DOM元素对象,则下面的代码应该起作用:

document.getElementsByTagName('table')[0].innerHTML = table_dom.innerHTML

答案 2 :(得分:0)

在使用{{tbody_string}}渲染HTML时,Jinga2可能会将其转义。您可以告诉它不要使用{{tbody_string|safe}}

最终,您可以完全摆脱“ javascript方式”,而直接使用Jinja2进行渲染。

还...请注意,如果您的tbody_string中有任何用户可编辑的数据,则需要采取必要的预防措施,以避免造成安全漏洞。