用innerHTML给textarea的value赋值,IE下丢失换行

deltatdeltat 2011-06-04 07:21:21

<textarea id="textarea"> </textarea>
<div id="div">
line1
line2
line3
</div>
<script>
document.getElementById("textarea").value=document.getElementById("div").innerHTML;
</script>


在Firefox和Chrome下,textarea的内容都显示为有换行的,在IE6下,换行就丢失了。请问有什么办法解决么?

...全文
506 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiayemingchong 2011-06-24
  • 打赏
  • 举报
回复
我和你一样的问题,把那个div改成textarea就可以了,取值用value
CaiKanXP 2011-06-24
  • 打赏
  • 举报
回复
这么做有什么用处呢?

有些浏览器会对加载到内存中的HTML代码重新整理,多个连续的空白字符会当作一个空格来对待,所以试图用innerHTML来获取原始的HTML代码是不可靠的。
JParser 2011-06-10
  • 打赏
  • 举报
回复
用textarea.value代替用textarea.innerHTML
Abely2 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 deltatdeltat 的回复:]
引用 1 楼 abely2 的回复:

IE不支持w3标准,需要把\r\n换行替换成html的<br />换行

Replace("\r\n", "<br/>").Replace("\n","<br/>");


我是要放在textarea的value里,不需要弄成<br />啊
[/Quote]

Replace("\r\n","\n");
试下这个
deltatdeltat 2011-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 abely2 的回复:]

IE不支持w3标准,需要把\r\n换行替换成html的<br />换行

Replace("\r\n", "<br/>").Replace("\n","<br/>");
[/Quote]

我是要放在textarea的value里,不需要弄成<br />啊
乌镇程序员 2011-06-04
  • 打赏
  • 举报
回复
//测试发现,ie中通过innerHTML获取的内容不是原样的,行末的换行符(ASIIC码10)变成了空格(32)
var txt = document.getElementById('div').innerHTML;
for(var i = 0; i < txt.length; i ++) alert(txt.charCodeAt(i));


搜索了一下,貌似IE6-8版本都会有这种情况,不知道怎么解决。。
http://www.cnblogs.com/snandy/archive/2011/04/07/2007553.html
Abely2 2011-06-04
  • 打赏
  • 举报
回复
IE不支持w3标准,需要把\r\n换行替换成html的<br />换行

Replace("\r\n", "<br/>").Replace("\n","<br/>");

87,996

社区成员

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

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