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方法可以获取到相应的数值,请问到底有哪里出错了对象函数
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方法可以获取到相应的数值,请问到底有哪里出错了对象函数
return "";
}还有个小问题就是由于传递的是object对象,你在函数里面对src的修改也会反映到下一个操作中,所以alert那种语句要去掉,要不数据就错乱了