Преобразование HTML представляет в виде строки в элементы DOM? [дубликат]

179
задан Deduplicator 1 February 2015 в 06:28
поделиться

5 ответов

Вы можно использовать DOMParser , например так:

 var xmlString = "
Link < / div> "; var doc = new DOMParser (). parseFromString (xmlString, «текст / xml»); console.log (doc.firstChild.innerHTML); // => Ссылка ... console.log (doc.firstChild.firstChild.innerHTML); // => Ссылка
299
ответ дан 23 November 2019 в 06:15
поделиться

Обычно вы создаете временный родительский элемент, в который записываете innerHTML, а затем извлекаете содержимое:

var wrapper= document.createElement('div');
wrapper.innerHTML= '<div><a href="#"></a><span></span></div>';
var div= wrapper.firstChild;

Если элемент, чей внешний HTML у вас есть, представляет собой простой

, как здесь, это просто. Если же это может быть что-то другое, что не может быть просто так, у вас может возникнуть больше проблем. Например, если это
  • , то родительская обертка должна быть
      .

      Но IE не может писать innerHTML для элементов типа , поэтому если у вас есть , вам придется обернуть всю строку HTML в

      ...
      , записать that в innerHTML и извлечь нужный вам на пару уровней ниже.

  • 191
    ответ дан 23 November 2019 в 06:15
    поделиться

    Хорошо, я сам понял ответ, после того как мне пришлось подумать над ответами других людей. :P

    var htmlContent = ... // a response via AJAX containing HTML
    var e = document.createElement('div');
    e.setAttribute('style', 'display: none;');
    e.innerHTML = htmlContent;
    document.body.appendChild(e);
    var htmlConvertedIntoDom = e.lastChild.childNodes; // the HTML converted into a DOM element :), now let's remove the
    document.body.removeChild(e);
    
    4
    ответ дан 23 November 2019 в 06:15
    поделиться

    Просто присвойте id элементу и обработайте его нормально, например:

    <div id="dv">
    <a href="#"></a>
    <span></span>
    </div>
    

    Теперь вы можете сделать так:

    var div = document.getElementById('dv');
    div.appendChild(......);
    

    Или с помощью jQuery:

    $('#dv').get(0).appendChild(........);
    
    1
    ответ дан 23 November 2019 в 06:15
    поделиться

    Ознакомьтесь с парсером чистого JavaScript HTML Джона Ресига.

    РЕДАКТИРОВАТЬ: если вы хотите, чтобы браузер анализировал HTML за вас, innerHTML - это именно то, что вам нужно. Из этот вопрос SO :

    var tempDiv = document.createElement('div');
    tempDiv.innerHTML = htmlString;
    
    14
    ответ дан 23 November 2019 в 06:15
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: