比如说一条标题实际长度是60。
我现在想在某些地方将它的长度控制在30,用LEFT或MID也可以实现,但有一个问题,这些都是把汉字做了一个字来算的,如果标题都是中文字还好的,但如果有数字或字母就不行了,会长短不一,现在这个JS是将汉字按2个来算就刚好。 
<script language="javascript">
  char function leftx(str,uLen)
{
var i,j,ascStr,str_tmp;
j = 0;
str_tmp = 0;
for (i = 0;i < str.length;i++)
{
str_tmp = str_tmp + str.charAt(i);
ascStr = str.charAt(i).charCodeAt(i);
if (ascStr < 0 || ascStr > 255)
j = j + 2;
else
j = j + 1;

if(j >= uLen)
{
break;
}
}
 return (str_tmp);
}
</script>
用这个代码来做的话,总会出现“Microsoft VBScript 运行时错误 错误 '800a000d' 类型不匹配: 'leftx' ”

解决方案 »

  1.   

    <script language="javascript">
    function leftx(str,uLen)
    {
    var i,j,ascStr,str_tmp;
    j = 0;
    str_tmp = 0;
    for (i = 0;i < str.length;i++)
    {
    str_tmp = str_tmp + str.charAt(i);
    ascStr = str.charAt(i).charCodeAt(i);
    if (ascStr < 0 || ascStr > 255)
    j = j + 2;
    else
    j = j + 1;

    if(j >= uLen)
    {
    break;
    }
    }
     return (str_tmp);
    }
    </script>
      

  2.   

    <script language="javascript">
    function leftx(str,uLen)
    {
    var i,j,ascStr,str_tmp;
    j = 0;
    str_tmp = “”;
    for (i = 0;i < str.length;i++)
    {
    str_tmp = str_tmp + str.charAt(i);
    ascStr = str.charAt(i).charCodeAt(i);
    if (ascStr < 0 || ascStr > 255)
    j = j + 2;
    else
    j = j + 1;

    if(j >= uLen)
    {
    break;
    }
    }
     return (str_tmp);
    }
    </script>