你的位置:首页 > Java教程

[Java教程]记录这一路上的坎坷


  最近在项目中想尽量少用jquery,多用原生JavaScript以便更好的提高。问题就出在一个简单的index提取。这个index我是通过元素的类名来获取,因此使用element.className.substr(-1,1).

这看似没有问题,不过在ie8及之前的ie版本,获取到的却是类名的第一个字符。这便是substr存在的兼容性问题。

 

在此总结下关于字符串截取的相关方法(参考http://www.w3school.com.cn/):

string.substr(start,length) 

返回值 :一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

IE8下开始位置为负数会出现取值错误(被修正为0)。

(ECMAscript 没有对该方法进行标准化,因此反对使用它)

string.slice(start,end)

返回值:一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。

说明

String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。

string.substring(start,end)

返回值:一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减start

说明

substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。

如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。