日期:2014-05-16  浏览次数:20318 次

javascript实现的一个自定义长度的文本自动换行的函数。
很多朋友在制作网页过程中总是发现某些时候一些英文会把原来好好的表格撑开而导致变形,虽然可以使用style="table-layout:fixed;word-wrap:break-word;word-break:break-all" 来解决这个问题,但有些时候会导致内容显示不完整而被隐藏了起来,并没有做到自动换行的效果。

于是偶就想写一个这样的函数来修补这个缺陷,这个函数很简单,但这里只是提供一种思路来解决这个问题。

function fnAddBr(id, iPerLineLen){.....}
id为要修改的文本块的id,iPerLineLen为每行的长度

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>Untitled Document</title> 
</head> 
<body> 
<script type="text/javascript">     
//函数功能:在指定长度处自动添加换行符,以英文长度为准,及8代表8个英文或4个汉字 
     function fnAddBr(id, iPerLineLen){ 
        var sStr=document.getElementById(id).innerHTML; 
        if(sStr.replace(/[^\x00-\xff]/g,"xx").length <= iPerLineLen){ 
            return -1; 
        } 
     
        var str=""; 
        var l=0; 
        var schar; 
        for(var i=0;schar=sStr.charAt(i);i++){ 
            str+=schar; 
            l+=(schar.match(/[^\x00-\xff]/)!=null?2:1); 
            if(l>= iPerLineLen){ 
                str+="
\n"; 
                l=0; 
            } 
        } 
        document.getElementById(id).innerHTML=str; 
    } 
    </script> 
<div id="content" style="border:1px solid #ccc"> 
我在做网页的时候添加的内容在生成网页后总是横向把表格撑的很宽,很难看;  
我在加了  
style="table-layout:fixed;word-wrap:break-word;word-break:break-all"  

这个代码后,表格倒是不会撑宽了,可是内容又显示不完全了,只是显示表格一样的宽度的内容,其他的被遮挡或是过滤掉了。  
我的是汉字,这个有关系吗?  

请问有什么方法可以让在表格中的文字到多少字的时候就自动换一行?或是能换行又不撑大表格,而且不略去内容!  

我的内容是在动易中调用的这个标签! 
</div> 

<div id="content1" style="border:1px solid #ccc"> 
我在做网页的时候添加的内容在生成网页后总是横向把表格撑的很宽,很难看;  
我在加了  
style="table-layout:fixed;word-wrap:break-word;word-break:break-all"  

这个代码后,表格倒是不会撑宽了,可是内容又显示不完全了,只是显示表格一样的宽度的内容,其他的被遮挡或是过滤掉了。  
我的是汉字,这个有关系吗?  

请问有什么方法可以让在表格中的文字到多少字的时候就自动换一行?或是能换行又不撑大表格,而且不略去内容!  

我的内容是在动易中调用的这个标签! 
</div> 

<script type="text/javascript"> 
    fnAddBr("content",25); 
    fnAddBr("content1",50); 
</script> 
</body> 
</html>