簡體   English   中英

如何使用Javascript替換HTML標簽

[英]How to replace Html tags using Javascript

我已經使用Webservices獲取了html內容,但返回的HTML格式不正確,導致頁面中斷。

它返回自我關閉錨標簽,我需要糾正。

<p><a name="Example"/></p>

我正在嘗試下面的代碼來更正上面的代碼

<p><a name="Example"></a></p>

但這行不通-

var obj1 = document.getElementsByTagName('html')[0];;
obj1.innerHTML = obj1.innerHTML.replace(/\/><\/p>/g, '></a></p>');

我不確定,但是正則表達式似乎有問題。

我認為問題(或至少最重要的問題)不是您的正則表達式。 更重要的是,瀏覽器必須解析格式錯誤的HTML,並可能以潛在的意外方式在內部進行切換。 結果甚至可能因瀏覽器而異。

下面的代碼段顯示了瀏覽器嘗試解釋您提供的輸入html的結果。 當我在Firefox v44.0.2的Stack Overflow代碼片段中運行此命令時, <p><a name="Example"/a></p>的輸入顯示為<p><a name="Example"></a></p><a name="Example"> </a> 請注意,至少以三種方式修改了代碼:

  1. 插入正確的結束標簽
  2. p標記內的html在其外部重復
  3. 重復的代碼甚至在空白方面也有所不同

注意:那是我嘗試任何進一步的操作之前。

因此,甚至很難知道正則表達式的輸入是什么,這使得很難知道如何編寫正則表達式或任何其他算法來進一步清理它。 如果您可以確定輸入html中的大多數錯誤屬於同一錯誤(例如,多個自閉合錨標記是唯一的問題), 可以使用正則表達式來“修復”它們。 但是,如果html的編寫方式多種多樣,我想知道您是否必須找出另一種方式來清理代碼(例如,手動?)。

 var obj1 = document.getElementsByTagName('div')[0]; var inner = obj1.innerHTML .replace(/</g, "&lt;") .replace(/>/g, "&gt;"); document.write("<p>The following shows what is actually retrieved by 'obj1.innerHTML':</p>"); document.write(inner); 
 <div> <p><a name="Example"/></p> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM