整个页面的代码都贴上了,主要就是fun这个,enLength是用来判断是否是中文字符,其实这边是可以用asc来判断的,不过因为真正用到的话是cnLength这函数不只是判断中文字符,来说说fun()这函数,我想的是来判断textarea中输入的字符串,如果整个字符串长度小于36的话就直接输出,如果是大于36的话就进行判断,主要就是判断36个字节后如果还有字符的话就用省略号代替,现在这个有点问题,但是实在想不明白,请各位帮帮忙
<html>  
<body>  
<script type="text/javascript"> 
function cnLength(Str) {
var escStr = escape(Str);
var numI = 0;
var escStrlen = escStr.length;
for (i = 0; i < escStrlen; i++)
if (escStr.charAt(i) == '%')
if (escStr.charAt(++i) == 'u')
numI++;
return numI;
}
function fun()
{
t = document.getElementById("text").value.length + cnLength(document.getElementById("text").value);
alert(t);
if( t > 36)
{
var len = 0;
for(var i = 0; i < 36; i++)
{
if(cnLength(document.getElementById("text").value.substring(i,i + 1)) == 1)
{
len += 2;
}
if(cnLength(document.getElementById("text").value.substring(i,i + 1)) == 0)
{
len += 1;
}
if(len > 35)
{
break;

}
content = document.getElementById("text").value.substring(0,(i - 1) ) + "...";
}

}
else
{
content = document.getElementById("text").value;
}

alert(content);
}
</script> <textarea id="text"></textarea>
<input type="button" onClick="fun()">
</body>  
</html>

解决方案 »

  1.   

    <html>  
    <body>  
    <script type="text/javascript"> function fun()
    {
        var txt = document.getElementById("text").value;
        var txt1 = "";
        alert(txt.length)//长度;
        if(txt.length<36) txt1=txt
        else txt1 = txt.substr(0,36)+"..."
        alert(txt1)
    }
    </script> <textarea id="text"></textarea>
    <input type="button" onClick="fun()">
    </body>  
    </html>
      

  2.   

     if(txt.length<=36) txt1=txt
      

  3.   

    <html>  
    <body>  
    <script type="text/javascript"> 
    function cnLength(Str) {
    var escStr = escape(Str);var numI = 0;
    var escStrlen = escStr.length;
    for (i = 0; i < escStrlen; i++)
    if (escStr.charAt(i) == '%')
    if (escStr.charAt(++i) == 'u')
    numI++;
    return numI;
    }
    function fun()
    {
    t = document.getElementById("text").value.length + cnLength(document.getElementById("text").value);
    alert(t);
    if( t > 36)
    {
    var len = 0;
    for(var i = 0; i < 36; i++)
    {
    if(cnLength(document.getElementById("text").value.substring(i,i + 1)) == 1)
    {
    len += 2;
    }
    if(cnLength(document.getElementById("text").value.substring(i,i + 1)) == 0)
    {
    len += 1;
    }
    if(len > 35)
    {
    break;}
    }
    content = document.getElementById("text").value.substring(0,i+1 ) + "...";}
    else
    {
    content = document.getElementById("text").value;
    }alert(content);
    }
    </script> <textarea id="text">你好abcdefghijklmlopqrstuvwxyz1234567890</textarea>
    <input type="button" onClick="fun()">
    </body>  
    </html>
      

  4.   

    二楼理解错了,我没说清楚= = 就是说如果大于36的话,这36是字节数不是字数,length出来之后是字数,然后最后如果大于36的话,就输出前36个字节的东西,包括中文和英文或者数字什么的,而不是把前36个字全都输出来
      

  5.   

    好像没有那么简单 其实LZ那么写也是有bug的 我的字符串里要是有%u这些特殊字符咋办?
    汉字肯定是占6个字节的 其实我们可以把汉字替换成6个数字1 特殊处理下 再来截