// UTF8字符集实际长度计算function getStrLeng(str){var realLength = 0 var len = str.length var charCode = -1 for(var i = 0i <leni++){charCode = str.charCodeAt(i) if (charCode >= 0 &&charCode <= 128) { realLength += 1 }else{ // 如果是中文则长度加3realLength += 3 }} return realLength}
在JS中字符串的长度不分中英文字符, 每一个字符都算一个长度,这跟PHP里的strlen()函数就不太一样。PHP里的strlen()函数根据字符集把GBK的中文每个2累加,把UTF-8的中文字符每个按3累加。主要是为了匹配数据库的长度范围内,比如GBK的数据库某字段是varchar(10),那么就相当于5个汉字长度,一个汉字等于两个字母长度。如果是UTF8的数据库则是每个汉字长度为3。
<html><head>
<title>table_td</title>
<style>
td{
border:1px solid black
border-collapse:collapse
width:60px
height:20px
}
table{
border:1px solid black
border-collapse:collapse
}
</style>
<script>
var limitLength = 2//限制多少个字数
function limitLen(){
var count = document.getElementsByTagName("td").length
for(var i = 0i<counti++){
var s = document.getElementsByTagName("td")[i].innerHTML
document.getElementsByTagName("td")[i].title = s
if(s.length>limitLength){
document.getElementsByTagName("td")[i].innerHTML = s.substring(0,limitLength)+"..."
}
else if(s.length < limitLength){
for(var c = s.lengthc<limitLength+3c++){//+3是因为后面三个...
s += " "
}
document.getElementsByTagName("td")[i].innerHTML = s
}
}
}
</script>
</head>
<body onLoad="limitLen()">
<table>
<tr>
<td>123dddddddddddd</td>
<td>345</td>
<td>测试测试测试测试测试1</td>
<td>345</td>
</tr>
<tr>
<td></td>
<td>空的</td>
<td>测试测试测试测试测试测试测试测试2</td>
<td>test</td>
</tr>
</table>
</body>
</html>