JS如何获取HTML源码中的换行符

muhero 2009-11-01 05:15:28
HTML源码中代码片断(字符串)为如下形式

字符串1
字符串2
字符串3

而在HTML页面中显示如下:

字符串1 字符串2 字符串3


现拟实现JS动态给每行(HTML源码)字符串前插入一个HTML标签,如:
<li>字符串1
<li>字符串2
<li>字符串3

请问该如何实现
...全文
1206 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Microogle 2009-11-02
  • 打赏
  • 举报
回复
我猜LZ是要加上<br>标签来实现换行。
diffmaker 2009-11-02
  • 打赏
  • 举报
回复
正则表达式
diffmaker 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yyz985 的回复:]
var s = "字符串1\n字符串2\n字符串3";
alert(s.replace(/(.+)/g, ' <li>$1 </li>'))

[/Quote]

人家给你正确答案了,表示什么?在下则表达式中,点号(.)表示换行符以外的字符
muhero 2009-11-02
  • 打赏
  • 举报
回复
其实根本的问题就是不知道HTML源代码中的换行在JS中用什么来表示,“\r\n”是行不通的
yyz985 2009-11-02
  • 打赏
  • 举报
回复
试了好像IE下不行
可以用<pre>或<textarea>容器代替
diffmaker 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cuixiping 的回复:]
以这段代码为例
<div>
第一行
第二行
第三行
</div>

ie中的innerHTML,outerHTML,nodeValue是取不到换行符的,但firefox的innerHTML,nodeValue的返回结果和源码一致是有换行符的。
所以,你的问题在firefox下比较好办。
如果在ie下,只能先获取本页的源码了,用ajax下载本页的源码,再做文本分析。
在后台就把内容中手动添加标志,是个不错的方法,添加注释就行了,换行处添加一个 <!-- -->不影响页面解析,但可以被innerHTML,outerHTML,nodeValue取到。
[/Quote]

是的,我只看了FF下,没有在IE下看,可能误导楼主了,不好1S了
sohighthesky 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 diffmaker 的回复:]
楼主可以自己运行一下,看一下效果是不是你想要的
[/Quote]

还真以为能取到呢

[Quote=引用 14 楼 cuixiping 的回复:]
以这段代码为例
<div>
第一行
第二行
第三行
</div>

ie中的innerHTML,outerHTML,nodeValue是取不到换行符的,但firefox的innerHTML,nodeValue的返回结果和源码一致是有换行符的。
所以,你的问题在firefox下比较好办。
如果在ie下,只能先获取本页的源码了,用ajax下载本页的源码,再做文本分析。
在后台就把内容中手动添加标志,是个不错的方法,添加注释就行了,换行处添加一个 <!-- -->不影响页面解析,但可以被innerHTML,outerHTML,nodeValue取到。
[/Quote]
up,
早说了,ie下基本不行
cuixiping 2009-11-02
  • 打赏
  • 举报
回复
以这段代码为例
<div>
第一行
第二行
第三行
</div>


ie中的innerHTML,outerHTML,nodeValue是取不到换行符的,但firefox的innerHTML,nodeValue的返回结果和源码一致是有换行符的。
所以,你的问题在firefox下比较好办。
如果在ie下,只能先获取本页的源码了,用ajax下载本页的源码,再做文本分析。
在后台就把内容中手动添加标志,是个不错的方法,添加注释就行了,换行处添加一个<!-- -->不影响页面解析,但可以被innerHTML,outerHTML,nodeValue取到。
diffmaker 2009-11-02
  • 打赏
  • 举报
回复
楼主可以自己运行一下,看一下效果是不是你想要的
diffmaker 2009-11-02
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
<style type="text/css">
#oldc{
width:600px;
border:4px solid red;
}
#newc{
width:600px;
border:4px solid blue;
}
</style>
<script type="text/javascript">
window.onload=function(){
var oldcontent=document.getElementById("oldc").innerHTML;
var newcontent=oldcontent;
newcontent=newcontent.replace(/(.+)/g,"<li>$1</li>");
document.getElementById("newc").innerHTML=newcontent;
}
</script>
</head>
<body>
<div id="oldc">
字符串1
字符串2
字符串3
……
字符串N
</div>
<br />
<div id="newc"></div>
</body>
</html>
muhero 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 microogle 的回复:]
我猜LZ是要加上 <br>标签来实现换行。
[/Quote]

我需要动态将行分出来并添加样式

由于取不到HTML代码中的换行标志,现在只能在内容中手动添加标志
muhero 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 diffmaker 的回复:]
引用 3 楼 yyz985 的回复:
var s = "字符串1\n字符串2\n字符串3";
alert(s.replace(/(.+)/g, ' <li>$1 </li>'))



人家给你正确答案了,表示什么?在下则表达式中,点号(.)表示换行符以外的字符
[/Quote]


首先s变量中没有"\n"

在你提醒之后特意试了一下,该正则……如下:
<li>
字符串1
字符串2
字符串3
</li>

而非
<li>字符串1 </li>
<li>字符串2 </li>
<li>字符串3</li>


wcwtitxu 2009-11-02
  • 打赏
  • 举报
回复
同样关注下.

ie 下:

<div id="x">
字符串1
字符串2
字符串3
</div>
<script>
alert(x.innerHTML) // 连在一行了 "字符串1 字符串2 字符串3 "
/*
不改 HTML 的情况下,有没有办法,看到:
字符串1
字符串2
字符串3
*/
</script>
BeenZ 2009-11-01
  • 打赏
  • 举报
回复

var s = "字符串1\n字符串2\n字符串3";
alert(s.replace(/^(.*)$/img, "<li>$1</li>"))

yyz985 2009-11-01
  • 打赏
  • 举报
回复
var s = "字符串1\n字符串2\n字符串3";
alert(s.replace(/(.+)/g, '<li>$1</li>'))
sohighthesky 2009-11-01
  • 打赏
  • 举报
回复
li标签总要闭合吧,
此功能在ie下好像不好完成,

87,910

社区成员

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

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