javascript函数调用报缺少对象

hhdxiaoh 2013-07-19 10:01:41
function len(srce,sta,mlen){
var srcLen = srce.length;
var curLen = 0;
var srcIdx = sta;
var le = 0;
for(;;){
//单字节小于255
if(src.charCodeAt(srcIdx) > 255){
curLen+=2;
}else{
curLen++;
}
le=le+1;
}
// 移动指针
srcIdx++;
// 超出长度退出
if(curLen = mlen|| srcIdx > srcLen){
return le;
}
}
//解析水费明细
function decodeDatailWater(detLin,datail){
var L=[];
var spos = 0; //每条记录开始位置
alert("a1");
alert(len(datail,spos+9+6,64));
调用上面的函数,调试就会报缺少对象
请问这是什么问题??
...全文
227 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhdxiaoh 2013-07-22
  • 打赏
  • 举报
回复
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方法可以获取到相应的数值,请问到底有哪里出错了
snowhite8888 2013-07-21
  • 打赏
  • 举报
回复
src声明在哪?
hhdxiaoh 2013-07-21
  • 打赏
  • 举报
回复
谢谢指导,现在已解决
yzx99 2013-07-20
  • 打赏
  • 举报
回复
建议用JsLint把代码规范一下,这样就可以发现这类错误。 规范后的代码如下: // JScript source code /*global window */ function len(srce, sta, mlen) { "use strict"; var srcLen = srce.length, curLen = 0, srcIdx = sta, le = 0; for (; ; ) { //单字节小于255 if (src.charCodeAt(srcIdx) > 255) { curLen += 2; } else { curLen++; } le = le + 1; } // 移动指针 srcIdx++; // 超出长度退出 if ((curLen === mlen) || (srcIdx > srcLen)) { return le; } } //解析水费明细 function decodeDatailWater(detLin, datail) { "use strict"; var L = [], spos = 0; //每条记录开始位置 window.alert("a1"); window.alert(len(datail, spos + 9 + 6, 64)); } JSLINT检查后,结果很明显: C:\JScript1.js(14,7) JSLINT: 'src' was used before it was defined. if (src.charCodeAt(srcIdx) > 255) 这样就避免你调试时遇到种种麻烦
  • 打赏
  • 举报
回复
难道你的这个src是全局变量?不是的话,没定义当然会缺少对象,你没new一个对象啊,少年
一叶飞舟 2013-07-19
  • 打赏
  • 举报
回复
if(src.charCodeAt(srcIdx) > 255){} ------------- src有定义过吗,没有的话,就是写错了
再看我一眼 2013-07-19
  • 打赏
  • 举报
回复
if(src.charCodeAt(srcIdx) > 255){ 这一行 src未定义 我看你上边传入的是srce吧

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧