繁体   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