2017-05-27 178 views
-1

我有一個已經存在於HTML頁面的元素作爲字符串。 如何從該元素獲取文本並將其轉換爲HTML並將其重新注入到現有元素中?如何將現有DOM元素文本轉換爲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

[HTML實體解碼]的可能重複(https://stackoverflow.com/questions/5796718/html-entity-decode) –

+1

[Unescape HTML實體在Javascript中可能的重複?](https://stackoverflow.com/questions/1912501/unescape-html-entities-in-javascript) –

回答

1

你需要讀出textContent代替innerHTML,然後寫到innerHTML喜歡你了吧:也

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

注意getElementsByTagName返回不具有innerHTML的NodeList。請使用querySelector

1

你可以看到如何HTML實體從這裏解碼:Unescape HTML entities in 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上觸發。

+0

'document'是一個對象,而不是標籤 – charlietfl

+0

@charlietfl謝謝,糾正。 –