如何给变量赋一个多行字符串?

在javascript中如何给变量赋一个多行字符串?

我们经常遇到要给一个变量赋一个多行字符串的场景,通常的做法是祭出引号和转义打法,如:

方法1:

var html1 = "<html>\r\n<head>\r\n</head>\r\n<body>\r\n<a href=\"http://www.taoremai.com\">淘热卖</a>\r\n</body>\r\n</html>";

这种方法最大的问题是把很多本来不再同一行的东西写在了同一行,如果内容长乐看起来那是相当不方便。

方法2:

var html2 = "<html>\r\n"
+"<head>\r\n"
+"</head>\r\n"
+"<body>\r\n"
+"<a href=\"http://www.taoremai.com\">淘热卖</a>\r\n"
+"</body>\r\n"
"</html>";

这种方法解决了第一种方法中所说的问题,但多了很多加号和引号。

那有没与其他更好的方法呢?且看:

方法3:

var html3 = "<html>\r\n\
<head>\r\n\
</head>\r\n\
<body>\r\n\
<a href=\"http://www.taoremai.com\">淘热卖</a>\r\n\
</body>\r\n\
</html>";

请大家注意,前面几行后面多了个反斜杠,这个是javascript 本身就支持的。这种写法有些编辑器下着色可能会有问题。

下面再来看几种变态的写法,这两种方法确实方便,不但省了\r\n,连引号转义都省了。但这些毕竟属于”歪门邪道”这两个方法不推荐:

方法4:

Function.prototype.getMultiLine = function() {   
    var lines = new String(this);   
     lines = lines.substring(lines.indexOf("/*") + 3, lines.lastIndexOf("*/"));   
    return lines;   
}   
 
var html4 = function() {   
/*<html>
<head>
</head>
<body>
<a href="http://www.taoremai.com">淘热卖</a>
</body>
</html>*/
}   
 
document.write(html4.getMultiLine());

这个方法将多行文本写成函数的多行注释内,然后,通过解析字符串,将注释里的文本分离出来,这样,整个注释内容可以复制到JS代码中。这个方法只在IE里支持,Firefox下会有问题。

方法5:

var html5 = (<r><![CDATA[
<html>
<head>
</head>
<body>
<a href="http://www.taoremai.com">淘热卖</a>
</body>
</html>
]]></r>).toString();
 
alert(html5);

这个方法的原理是生成一个XML节点。因为XML可以使用CDATA来生成多行文本。然后,再将这个节点转换成字符串,就可以得到一个多行文本了。不过这个方法只在支持E4X的浏览器上有效。经过测试,Firefox3.0支持,IE7.0不支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值