Невозможно определить HTML-содержимое тега HTML с помощью innerHtml. - PullRequest
0 голосов
/ 09 января 2019

У меня есть этот код 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;).

...