У меня есть элемент, который уже присутствует на странице с HTML в виде строки. Как я могу взять текст из этого элемента и преобразовать его в HTML и повторно вставить его обратно в существующий элемент?

Все, что я пробую, перерисовывает элементы innerhtml как текст.

window.current_element_content=window.current_element.previousElementSibling.innerHTML;
window.current_element.previousElementSibling.getElementsByTagName('div').innerHTML = window.current_element_content;

Пример текста при печати на консоли.

<tr>
        <td headers="mon">
            9:00 AM - 4:00 PM
        </td>
        <td headers="tues">
            9:00 AM - 4:00 PM
        </td>
        <td headers="wed">
            9:00 AM - 4:00 PM
        </td>
        <td headers="thurs">
            9:00 AM - 4:00 PM
        </td>
        <td headers="fri">
            9:00 AM - 4:00 PM
        </td>
        <td headers="sat">
            Closed
        </td>
        <td headers="sun">
            Closed
        </td>
-1
cph 27 Май 2017 в 19:55

2 ответа

Лучший ответ

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

var element = current_element.previousElementSibling.querySelector('div');
element.innerHTML = element.textContent;

Также обратите внимание, что getElementsByTagName возвращает NodeList, который не имеет innerHTML. Вместо этого используйте querySelector.

1
trincot 27 Май 2017 в 17:09

Вы можете узнать, как декодировать HTML-объекты здесь: Unescape HTML-объекты в Javascript?

После этого вы можете вставить свой код в заданный элемент, используя свойство .innerHTML:

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}

$(document).ready(function(){
    var s = '<input type=button value="Inserted Button">';
    document.getElementById('my_place').innerHTML = htmlDecode(s);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div id="my_place">
&nbsp;
</div>

В приведенном выше коде jQuery используется только для запуска на document.ready.

1
Todor Simeonov 27 Май 2017 в 17:10