首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换javascript中的特定标记内容

如何替换javascript中的特定标记内容
EN

Stack Overflow用户
提问于 2012-06-19 11:33:41
回答 3查看 13.7K关注 0票数 4

我有一个字符串,,它可能是或可能不是有效的,但是它应该包含一个标题标记。

我想用新的内容代替标题的内容。

示例1:

代码语言:javascript
复制
lorem yada yada <title>Foo</title> ipsum yada yada  

应转化为:

代码语言:javascript
复制
lorem yada yada <title>Bar</title> ipsum yada yada  

示例2:

代码语言:javascript
复制
lorem yada yada <title attributeName="value">Foo</title> ipsum yada yada  

应转化为:

代码语言:javascript
复制
lorem yada yada <title attributeName="value">Bar</title> ipsum yada yada  

我不想用regex解析html -只是替换标题标签.请不要给我寄here..。

编辑:经过无数次的投票和大量的恩惠态度-

我知道(正如在最初的文章中所承认的),通常Regex不是处理HTML的方法。我对任何解决问题的解决方案都持开放态度,但到目前为止,每个JQuery / DOM解决方案都不起作用。“正确”是不够的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-19 12:03:19

使用regex很难可靠地完成这样的事情(阅读:“不是所有情况都能工作”),因此,如果可能的话,最好使用某种适当的解析器。

尽管如此,这里有一个简单的表达式,适用于您的示例:

代码语言:javascript
复制
var re = /(<title\b[^>]*>)[^<>]*(<\/title>)/i;
str = str.replace(re, "$1Bar$2");

有些事情不能处理,也不能正确地处理:注释、引号、CDATA等等。

票数 5
EN

Stack Overflow用户

发布于 2012-06-19 11:36:30

代码语言:javascript
复制
function replaceTitle( str, replacement ) {
    var tmp = document.createElement("ihatechrome");
    tmp.innerHTML = str;
    tmp.getElementsByTagName("title")[0].innerHTML = replacement;
    return tmp.innerHTML;   
}

replaceTitle( "lorem yada yada <title>Foo</title> ipsum yada yada", "Bar" );
//"lorem yada yada <title>Bar</title> ipsum yada yada"

出于某种原因,如果有带有img标记的src,google会发出请求。没有任何意义,但事情就是这样。

编辑:

这似乎适用于铬(不加载图像):

代码语言:javascript
复制
var doc = document.implementation.createHTMLDocument("");

doc.body.innerHTML = "<img src='/'>";

doc.body.innerHTML; //"<img src="/">"
票数 4
EN

Stack Overflow用户

发布于 2012-06-19 23:17:07

请上帝不要试图用regex解析html (我知道你说过你没有解析它,但你是.)jQuery有一组非常好的原语来操作DOM中没有的html:

代码语言:javascript
复制
var htmlishString = "almost <title>HTML</title>";
var $fakeDiv = jQuery('<div />');
$fakeDiv.html(htmlishString).find('title').text('Bar');
var manipulatedString = $fakeDiv.html()

http://jsfiddle.net/4kQkx/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11100077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档