无法使用innerHtml定义HTML标签的html内容

时间:2019-01-09 12:12:56

标签: javascript html innerhtml

我最近的项目中有以下HTML代码:

<div class="tabset">
    ...
    <input type="radio" name="tabset" id="tab-insert" aria-controls="insert" style="display: none;">
    <label for="tab-insert" id="label-insert" style="display: none;">Insert</label>
    ....
    <div class="right">
        <a href="#" class="myButton" onclick="insert_data();">Novo</a>
    </div>
    ....
    <div class="tab-panels">
    ....
    <div class="tab-panel" id="insert" style="display: none;" th:attr="data-url=@{/__${#strings.toLowerCase(classe.simpleName)} __/insert}">
        <p id="form-insert"></p>
    </div>
    ...
</div>

当我点击上方的按钮时,会触发此javascript函数:

function insert_data() {
  if(document.getElementById('tab-insert').style.display === 'none') {
    var url = document.getElementById('insert').dataset.url;

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        var myObj = this.responseText;

        parser = new DOMParser();
        var doc = parser.parseFromString(myObj, "text/html");
        var form_html = doc.getElementById('form');

        document.getElementById('tab-insert').removeAttribute('style');
        document.getElementById('label-insert').removeAttribute('style');
        document.getElementById('insert').removeAttribute('style');

        document.getElementById('form-insert').innerHtml = form_html;

        document.getElementById('tab-insert').setAttribute('checked', 'checked');
        document.getElementById('tab-listagem').removeAttribute('checked');
      }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
  }
}

由浏览器执行,在控制台中没有错误,但是没有将任何代码添加到<p id="form-insert"></p>块中。

无法找出问题所在。有人可以提示如何进行这项工作吗?

(我检查过,变量form_html接收到正确的值;除行document.getElementById('form-insert').innerHtml = form_html;之外,所有代码似乎都可以正常工作。)

0 个答案:

没有答案