function subStringByByte(srcObj, len) {
        if(srcObj.src.length <= 0){
         return "";
        }
       
        var src = srcObj.src;
        var curData = "";
        var srcLen = src.length;
        var curLen = 0;
        var srcIdx = 0;
        for (;;) {
         // 单字节值小于 255
         curLen += src.charCodeAt(srcIdx) > 255 ? 2 : 1;
       
         // 取字符串
         curData += src.charAt(srcIdx);
       
         // 移动指针
         srcIdx++;
       
         // 超出长度退出
         if (curLen >= len || srcIdx > srcLen) {
         srcObj.src = src.substring(srcIdx, src.length);
         srcObj.sub = curData;
         return curData;
         }
        }
       }
 //解析水费明细
 function decodeDatailWater(detLin,datail){
  var L=[];
  var spos = 0;                //每条记录开始位置
  var a = new Object();
  a.src = datail;
  alert(subStringByByte(a,9));
  for (var i=0;i<detLin;i++){
   var o = {};
   alert(subStringByByte(a,9));
   o.WatNo  = subStringByByte(a,9);  //水费记录号
   o.BookNo = subStringByByte(a,6); //册本号
   o.UseNam = subStringByByte(a,64); //户名
刚重新编写了一个,但是在调用时总是报subStringByByte函数中if(srcObj.src.length <= 0)的src.length为空或不是对象,但是我使用alert方法可以获取到相应的数值,请问到底有哪里出错了对象函数

解决方案 »

  1.   

    没看出什么问题。。不行增加红色部分判断if(!!srcObj||!!srcObj.src||srcObj.src.length <= 0){
             return "";
            }还有个小问题就是由于传递的是object对象,你在函数里面对src的修改也会反映到下一个操作中,所以alert那种语句要去掉,要不数据就错乱了
      

  2.   

    使用showbo的方方达后不再报为空或不是对象的错误,但是在for循环中无法获取到值alert(subStringByByte(a,9));为空,请大神在此指点下,谢谢