将HTML代码更改为Straight HTML

时间:2011-12-14 10:29:50

标签: jquery html

我有一个像这样在屏幕上部署的跨度......

<SPAN ID=_Datasoln_solutiondetails class=VIEWBOX STYLE=WIDTH:"100px">&lt;table border=&quot;0&quot; cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; width=&quot;100%&quot; align=&quot;left&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;Solutions/image/33-10058/Penguins.jpg&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;&quot; align=&quot;left&quot; width=&quot;200&quot; height=&quot;150&quot; style=&quot;margin-right: 10px&quot; src=&quot;/Solutions/image/33-10058/Penguins.jpg&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;p&gt;When installing TC it fails on Error &quot;Can't be bother to do this today&quot;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&nbsp;&lt;/p&gt;</SPAN>

我需要转换&lt;&gt;&amp; &quot;元素到&lt;,&gt; &安培; “

我写了这篇Jquery但没有任何反应......

$(document).ready(function() {
    var text = $("#_Datasoln_solutiondetails").val();
    text = text.replace('&lt;','<','&gt;','>','&quot;','"');
});

有人可以帮忙吗?

编辑JSfiddle

http://jsfiddle.net/justinerswell/H69kv/

5 个答案:

答案 0 :(得分:3)

答案是阅读范围的.text(),进行每次更换,然后将其写回HTML:

var text = $("#_Datasoln_solutiondetails").text();
text = text.replace('&lt;','<').replace('&gt;','>').replace('&quot;','"');
$("#_Datasoln_solutiondetails").html(text);

实例:http://jsfiddle.net/waunt/

编辑:请参阅@David回答,您甚至不需要执行.replace()

答案 1 :(得分:3)

首先,val()用于检索表单元素的值。相反,请使用html()来检索元素内容的来源,或使用text()来检索文本内容。

您的代码的另一个问题是,一旦您获取了该值,您就不会设置该值。使用text('abc')设置文本值,或html('<b>abc</b>')设置HTML源。

现在,您想要在特定场景中执行的操作实际上只是采用文本并将其用作

$("#_Datasoln_solutiondetails").html( $("#_Datasoln_solutiondetails").text() );

至于你的替换,嗯,根据上面的代码,它们是多余的,但它们也是错误的。如果你真的想要替换,请注意你不能通过在代码中添加其他参数来链接几个替换,并注意javascript string replace只替换第一个匹配。您想要使用的内容(如果上面的代码不够用)是正则表达式替换:

text = text.replace(/&lt;/g,'<');
text = text.replace(/&gt;/g,'>');
text = text.replace(/&quot;/g,'"');

其中/.../表示正则表达式,g表示全局,即替换所有匹配项。

答案 2 :(得分:1)

它是一个span,而不是一个表单控件,它没有值。请改用text()方法。

var element = jQuery('foo');
element.html(element.text());

答案 3 :(得分:0)

据我所知,你自己正在替换一些角色。实际的元素内容不包含像&lt;这样的实体引用,而是包含它们所表示的字符;当浏览器读取HTML源并构建文档树时,将解释实体引用。但是你想要完成的是什么?整个页面的URL会有所帮助。

答案 4 :(得分:-1)

我认为它不起作用,因为你的SPAN属性值没有用引号括起来。 jQuery似乎无法选择它,更不用说它了。

确保它们用引号括起来:

<span id="_Datasoln_solutiondetails"></span>