innerHTML问题

jiajianhui2009 2010-02-23 10:56:56
怎样在innerHTML中不编译带<>的文本呢?
举个例子:

var str = '<a href="javascript:void(0);" onclick=".." ><dsfdfdf></a>';
document.getElementById('id').innerHTML = str;

这样页面显示空。因为超链文本内容是带有<的,我想直接显示出 <dsfdfdf> 这样一个连接
...全文
176 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
浴火_凤凰 2010-02-23
  • 打赏
  • 举报
回复
那你就应该单独设置文本,在取到用户输入的值以后,先过滤一下特殊字符。
不建议让用户可以输入任何文本,那样会有漏洞的。
jiajianhui2009 2010-02-23
  • 打赏
  • 举报
回复
其实我的意思是超链文本是用户输入的,假如用户输入的是<abc>那按照大家的意思转译成<abc>然后录入数据库读取出来页面显示正确<abc>.但假如用户输入的直接就是<abc>那页面岂不也显示<abc>了?
hehuan1213 2010-02-23
  • 打赏
  • 举报
回复
var str = '<a href="javascript:void(0);" onclick=".." ><dsfdfdf></a>';
document.getElementById('id').innerHTML = str;
浴火_凤凰 2010-02-23
  • 打赏
  • 举报
回复

转义一下就可以了
var str = '<a href="javascript:void(0);" onclick=".." ><dsfdfdf></a>';
document.getElementById('id').innerHTML = str;
sohighthesky 2010-02-23
  • 打赏
  • 举报
回复
'<a href="javascript:void(0);" onclick=".." ><dsfdfdf></a>';
yingzhilian2008 2010-02-23
  • 打赏
  • 举报
回复
引用 1 楼 sohighthesky 的回复:
JScript code'<a href="javascript:void(0);" onclick=".." ><dsfdfdf></a>';
jiajianhui2009 2010-02-23
  • 打赏
  • 举报
回复

<script type="text/javascript">
function HTMLEncode(html)
{
var temp = document.createElement ("div");
(temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html);
var output = temp.innerHTML;
temp = null;
return output;
}
function HTMLDecode(text)
{
var temp = document.createElement("div");
temp.innerHTML = text;
var output = temp.innerText || temp.textContent;
temp = null;
return output;
}
var html = "<br>dffdf<p>qqqqq</p>";
var encodeHTML = HTMLEncode(html);
alert("方式一:" + encodeHTML);
var decodeHTML = HTMLDecode(encodeHTML);
alert("方式一:" + decodeHTML);
</script>

详细出处参考:http://www.jb51.net/article/18397.htm



解决!
孟子E章 2010-02-23
  • 打赏
  • 举报
回复
引用 8 楼 jiajianhui2009 的回复:
<%=Server.HtmlEncode(a)%>
这个在用js能实现吗?


使用js就是进行replace即可,搜索

javascript HtmlEncode
YaoZhengWu 2010-02-23
  • 打赏
  • 举报
回复
新来用户 接点分…
jiajianhui2009 2010-02-23
  • 打赏
  • 举报
回复
引用 9 楼 kk3k2005 的回复:
FF下 XXX.textContent='.......'
IE下 XXX.innerText='........'

还有 建立一个文本DOM在添加进指定节点中应该也可以吧

innerText 前提得有容器<a>吧,现在是<a>也是动态生成的啊
KK3K2005 2010-02-23
  • 打赏
  • 举报
回复
FF下 XXX.textContent='.......'
IE下 XXX.innerText='........'

还有 建立一个文本DOM在添加进指定节点中应该也可以吧
jiajianhui2009 2010-02-23
  • 打赏
  • 举报
回复
<%=Server.HtmlEncode(a)%>
这个在用js能实现吗?
孟子E章 2010-02-23
  • 打赏
  • 举报
回复
从数据库读取的做法是这样的
假如
a = rs("内容")

var str = '<a href="javascript:void(0);" onclick=".." ><%=Server.HtmlEncode(a)%></a>';
document.getElementById('id').innerHTML = str;
happy664618843 2010-02-23
  • 打赏
  • 举报
回复
转义

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧