CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  JavaScript

对象未定义是什么错误?

楼主focusonline(Study C#)2003-12-02 01:04:01 在 Web 开发 / JavaScript 提问

function   showSelItem(Item)  
  {  
  var   obj=Item;  
  var   str;  
  str="<TABLE   WIDTH=100%   HEIGHT=100%   BORDER=0   CELLPADDING=0   CELLSPACING=0>";  
  for(var   i=0;i<arr1.length;i++)  
  {  
  str+="<TR><TD   ALIGN=left     ONMOUSEOVER=this.className='Mover'   ONMOUSEOUT=this.className=''   ONCLICK=setValue(this,obj)>"+arr1[0]+"</TD></TR>";  
  }  
  str+="</TABLE>";  
  var   objW=obj.offsetWidth;  
  var   objH=obj.offsetHeight+2;  
  var   t=obj.offsetTop;  
  var   l=obj.offsetLeft;  
  while(obj=obj.offsetParent)  
  {  
  t+=obj.offsetTop;  
  l+=obj.offsetLeft;  
  }  
  with(sel.style)  
  {  
  top=t+objH;  
  left=l;  
  width=objW;  
  sel.innerHTML=str;  
  display=(display=='none'?'':'none');  
  }  
  }  
  IE的提示错误是“obj未定义”,请问怎么解决? 问题点数:100、回复次数:15Top

1 楼hugestar(dongdong)回复于 2003-12-02 08:36:25 得分 0

你多利用alert(obj.tagName);alert(obj.id);  
  来看你传入的obj对象是什么。怀疑你的obj=obj.offsetParent这句话有问题,  
  具体你再看msdn。看看obj.offsetParent是什么意思。Top

2 楼kingdomzhf(旭日东升)回复于 2003-12-02 08:52:30 得分 0

引用的对象不存在Top

3 楼hrh1979(剑仙)回复于 2003-12-02 10:05:16 得分 0

可能你的var   obj=Item;   这句话不对,试试  
  var   obj=window.document.getElementById(Item.id)  
  Top

4 楼xinyunyishui(心云意水)回复于 2003-12-02 12:39:48 得分 0

最大的可能:Item参数不是对象,而是对象的id之类的东西Top

5 楼hhddff(taizi)回复于 2003-12-02 13:23:37 得分 0

我也认为Item,可能不是对象,用typeof试试,看看是不是对象.Top

6 楼focusonline(Study C#)回复于 2003-12-02 14:03:12 得分 0

alert(typeof(Item));及alert(typeof(obj));的输出值都为object  
  其中的Item代表的是多个文本框的ID变量  
  在while前的alert(obj);的输出输出值还是object  
  while后的alert(obj);输出值就是Null了,请问这种情况如何解决呢?Top

7 楼yeefly(丰水犁)回复于 2003-12-02 15:13:45 得分 0

alert(obj.tagName   +   "   ,   "   +   obj.offsetParent.tagName)  
  看看是什么Top

8 楼walkingpoison(walkingpoison)回复于 2003-12-02 15:20:19 得分 0

楼主没搞清楚下面这段代码的作用啊。  
  while(obj=obj.offsetParent)  
  {  
  t+=obj.offsetTop;  
  l+=obj.offsetLeft;  
  }  
   
  这段代码其实是写的比较精妙的,用于定位html元素在页面中的绝对位置(在网上copy来copy去被用的很多)。  
   
  请注意看一下,while中间用的代码是obj=obj.offsetParent,是一个赋值语句。所以这句while语句同时完成了两个动作:1.将obj赋值为它的offsetParent;2.判断obj是否为object,是的话执行while循环中的语句。  
  也就是说,这个循环会不断循环,直到找不到obj的offsetParent为止。这样就能够循环相加得到html元素的绝对位置。循环在结束的时候,obj是必然为null的,因为这个正是循环跳出的条件。所以说,如果你还要利用最初的obj的话,要么就直接引用Item,要么另外定义一个变量来使用。Top

9 楼gdjxlhc(超仔)回复于 2003-12-02 15:24:20 得分 0

while(obj=obj.offsetParent)  
  {  
  t+=obj.offsetTop;  
  l+=obj.offsetLeft;  
  }  
  你的出错的我还没找到是那里问题,不过要回应一下你上面的问题,上面语句是当obj为null时退出循环,你在while后的alert(obj)当然是null啦。Top

10 楼gdjxlhc(超仔)回复于 2003-12-02 15:35:16 得分 0

楼主,建议你把调用该函数的代码都放上来,这样大家好调试嘛Top

11 楼focusonline(Study C#)回复于 2003-12-02 15:37:01 得分 0

alert(obj.tagName   +   "   ,   "   +   obj.offsetParent.tagName)  
  看看是什么  
  返回INPUT,TD  
  ==============  
  ONCLICK=setValue(this,obj)把这里的obj换成Item错误提示是:  
  Item未定义  
  ==============  
  在定义一次变量var   OBJ=Item;或者   var   OBJ=window.document.getElementById(Item.id);  
  在ONCLICK=setValue(this,OBJ)错误提示是OBJ未定义  
  ============================  
  function   setValue(Item,TXT)  
  {  
  //document.all["sel"].style.display='none';  
  //TXT.value=Item.innerText;  
  }  
  这个函数已经不起作用了,错误就是在ONCLICK=setValue(this,OBJ)这里  
  Top

12 楼focusonline(Study C#)回复于 2003-12-02 15:38:14 得分 0

页面中的文件  
  <DIV   ID="sel"   STYLE="padding:3;height:40;BORDER:   #6699CC   1px   solid;   POSITION:   absolute;width:0;background-color:#F8F8F5;display:none;cursor:default">  
  </DIV>Top

13 楼walkingpoison(walkingpoison)回复于 2003-12-02 15:43:07 得分 0

我已经解释得很清楚了Top

14 楼fason(咖啡人生)回复于 2003-12-02 15:43:17 得分 100

这样当然未定义啦,obj只是你函数里的变量!  
  改为  
  ONCLICK=setValue(this,'"+obj.uniqueID+"')  
   
  obj.uniqueID返回唯一的ID号  
   
  setValue中引用document.all(obj_id)来得到你要的obj.Top

15 楼adonis2222(黄面包)回复于 2003-12-02 15:44:40 得分 0

obj的名字或ID不对Top

相关问题

  • “程序未定义入口点”是指什么错误?谢谢!
  • 为什么出现错误用户定义类型未定义?
  • 为什么下面代码出现“datacheck未定义”的错误?
  • 为什么有个错误叫未定义路口点?
  • 为什么会提示“未定义,找不到index”错误
  • [求助]错误 未定义
  • 为什么连接数据库时出现类型未定义的错误?
  • 未定义入口点,编译错误
  • 关于webform_postbackoptions未定义的错误
  • 一分系列之C#问题之(未定义入口点?是什么错误啊?)

关键词

  • 未定义
  • obj
  • 对象
  • offsetparent
  • 输出
  • alert
  • typeof
  • item
  • var
  • str

得分解答快速导航

  • 帖主:focusonline
  • fason

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo