整个页面的代码都贴上了,主要就是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>
<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>
<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>
<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>
汉字肯定是占6个字节的 其实我们可以把汉字替换成6个数字1 特殊处理下 再来截