哪儿有错啊

一天要饭生活又开始啦 2013-09-03 03:04:11
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function toNewStr(str, index) {
var st = '',strarr;
strarr = str.split("<br/>");
for(var i=0; i<strarr.length; i++) {
if(index<strarr[i].length && index==strarr[i].length)
return st += strarr[i].substr(0, index);
else
return str += toNewStr(strarr[i+1], index-strarr[i].length) + '<br />';
}
}

var str='abc一二三<br/>一二三';
var s = toNewStr('abc一二三<br/>一二三',8);
alert(s);
</script>
</head>

<body>
</body>
</html>
哪儿有错啊?
...全文
172 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
已解决。。。
KK3K2005 2013-09-03
  • 打赏
  • 举报
回复
if(index<strarr[i].length && index==strarr[i].length) 加入 index 小于xxx这个长度 且 index 等于 xxx这个长度 那么。。。。(永远不会执行)
南瓜三三 2013-09-03
  • 打赏
  • 举报
回复
不知道啊啊啊 啊
OPPPPOP 2013-09-03
  • 打赏
  • 举报
回复
你前面那个帖子我也参与了,所以能理解你想要的东西,给你改了下,这个东西其实不用这么麻烦的
function toNewStr(str, index) {
    var strarr = str.split("<br/>");
        if(index <= strarr[0].length) 
            return st += strarr[0].substr(0, index);
        else {
			if(strarr.length==1){
				return strarr[0];
			}
		  //return   (st += toNewStr(strarr[i+1], index-strarr[i].length) + '<br />');

            return   st += strarr[0] + '<br />' + toNewStr(str.substr(strarr[0].length+5), index-strarr[0].length-1);
//递归str剩下的部分,<br/>长度是5,索引减去第一段的长度 再减去<br/>的位置1
		}  
}
  • 打赏
  • 举报
回复
不过函数考虑还不周全
  • 打赏
  • 举报
回复
引用 3 楼 antiwise 的回复:
if(index<strarr[i].length && index==strarr[i].length)
这块有问题 这个肯定是false的 你再理一下思路
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var st = ''
function toNewStr(str, index) {
    var strarr;
    strarr = str.split("<br/>");
    for(var i=0; i<strarr.length; i++) {
        if(index<strarr[i].length || index==strarr[i].length) 
            return st += strarr[i].substr(0, index);
        else 
            //return   (st += toNewStr(strarr[i+1], index-strarr[i].length) + '<br />');
			return   st += strarr[i] + '<br />' + toNewStr(strarr[i+1], index-strarr[i].length);
				
				
    }
}

var str='abc一二三<br/>一二三';
var s = toNewStr('abc一二三<br/>一二三',8);
alert(s);
</script>
</head>

<body>
</body>
</html>
可以了,谢谢你,是那的问题
OPPPPOP 2013-09-03
  • 打赏
  • 举报
回复
if(index<strarr[i].length && index==strarr[i].length)
这块有问题 这个肯定是false的 你再理一下思路
tch791098565 2013-09-03
  • 打赏
  • 举报
回复
同意楼上说的
潮起潮落 2013-09-03
  • 打赏
  • 举报
回复
最后一次循环i=1,然后strarr[i+1]取到的是什么呢,肯定不是字符数组里面的字符了吧 我调试看到是undefined

87,910

社区成员

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

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