今天在项目中遇到一个感觉很怪的问题,请各位朋友帮忙解释一下,谢了!!!今天用到一个网页编辑控件,类似于我现在发表问题时的这个编辑器,就是可以改变文字样式的这种。。提交这个输入框的内容时,在后台获取到的数据是(格式如下)——格式一:
<strong><a href="#"><font color="#999999">Test</font></a></strong>但是保存到数据库里面的格式是——格式二:
<strong><a href="#"><font color="#666666">就是这样</font></a></strong>将格式二里面的数据库取出来后,展示到页面上用的方式是从c#后台定义一个div,设置属性为runat="server",后台为:
this.divText.innerHTML = "从数据库里面取出来的数据——格式二那种",进过这个步骤后,前台显示的样式和刚开始设置的样式在网页上展示是一样的效果。问题一:从格式一到格式二之间的转化,为什么会自动进行,明明在调试的时候是格式一,开始到了数据库就成了各式二了。
问题二:为什么div.innerHTML=<strong><a href="#"><font color="#666666">就是这样</font></a></strong>在前台展示的样式是和<strong><a href="#"><font color="#999999">Test</font></a></strong>在前台展示的样式是一样的。换句话说,就是为什么div.innerHTML=<strong><a href="#"><font color="#666666">就是这样</font></a></strong>和<strong><a href="#"><font color="#999999">Test</font></a></strong>展示是等价的。
<strong><a href="#"><font color="#999999">Test</font></a></strong>但是保存到数据库里面的格式是——格式二:
<strong><a href="#"><font color="#666666">就是这样</font></a></strong>将格式二里面的数据库取出来后,展示到页面上用的方式是从c#后台定义一个div,设置属性为runat="server",后台为:
this.divText.innerHTML = "从数据库里面取出来的数据——格式二那种",进过这个步骤后,前台显示的样式和刚开始设置的样式在网页上展示是一样的效果。问题一:从格式一到格式二之间的转化,为什么会自动进行,明明在调试的时候是格式一,开始到了数据库就成了各式二了。
问题二:为什么div.innerHTML=<strong><a href="#"><font color="#666666">就是这样</font></a></strong>在前台展示的样式是和<strong><a href="#"><font color="#999999">Test</font></a></strong>在前台展示的样式是一样的。换句话说,就是为什么div.innerHTML=<strong><a href="#"><font color="#666666">就是这样</font></a></strong>和<strong><a href="#"><font color="#999999">Test</font></a></strong>展示是等价的。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body><div id="first"><strong><a href="#"><font color="#666666">就是这样</font></a></strong></div>
<div id="second"></div>
<div id="three"></div>
</body>
</html>
<script type="text/javascript">
alert(document.getElementById("first").innerText);
document.getElementById("three").innerHTML = document.getElementById("first").innerText;
document.getElementById("second").innerHTML = '<strong><a href="#"><font color="#999999">就是这样</font></a></strong>';
</script>
第二个问题想明白了,其实document.getElementById("first").innerText;也就是<strong><a href="#"><font color="#666666">就是这样</font></a></strong>与<strong><a href="#"><font color="#999999">就是这样</font></a></strong>在赋值给div的innerHTML属性时,当html内容显示,自然显示的就是那种有样式的效果了。只不过应注意,innerHTML会自动识别转义符应该是这样的吧???请朋友继续发表高见!!!但是问题一还是不明白
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title> 无标题文档</title>
</head><body><div id="first"><strong><a href="#"><font color="#666666">就是这样</font>& lt;/a></strong></div>
<div id="second"></div>
<div id="three"></div>
</body>
</html>
<script type="text/javascript">
alert(document.getElementById("first").innerText);
document.getElementById("three").innerHTML = document.getElementById("first").innerText;
document.getElementById("second").innerHTML = '<strong><a href="#"><font color="#999999">就是这样</font></a></strong>';
</script>第二个问题想明白了,其实document.getElementById("first").innerText;也就是<strong><a href="#"><font color="#666666">就是这样</font>& lt;/a></strong>与<strong><a href="#"><font color="#999999">就是这样</font></a></strong>在赋值给div的 innerHTML属性时当html内容显示,自然显示的就是那种有样式的效果了。只不过应注意,innerHTML会自动识别转义符应该是这样的吧???请朋友继续发表高见!!!但是问题一还是不明白
不是的,我调试时在后台取到的数据是标准的html,但是存到数据库里面就变成带转义的了
并且很奇怪的是你这时候不能看到全部的转义后的代码,只能看到很少的一部分转义后的数据我用的是ms sql server 2000
firefox下用textContent代替
innerHTML 返回节点内的所有内容
<div id="main"><strong><a href="#"><font color="#999999">就是这样</font></a></strong></div>
</body><script>
alert(document.getElementById("main").innerText);
</script>
大家注意上面alert()函数里面的内容:document.getElementById("main").innerText;这个document.getElementById("main").innerText获取到的内容应是"<strong><a href="#"><font color="#999999">就是这样</font></a></strong>",但是通过alert()函数就变成了"<strong><a href="#"><font color="#999999">Test</font></a></strong>",也就是说alert()函数将转义后的html标签(<><这种)转成了标准的html标签