请教高手倒第三行的代码有什么错误??

dj0628 2005-12-12 04:16:46
function addselect(obj,str,seled,fg)
{
var i=0;
var arrField=str.split(fg);
var num=1;
var j=obj.length;
obj.clear;

for(i=0;i<j;i++) {
obj.remove(0);
}
for(i=0;i<arrField.length;i++)
{
var opt=document.createElement("OPTION");
opt.text=arrField[i];
opt.value=arrField[i];
obj.add(opt);
if (arrField[i]==seled)
{
opt.selected=true;
}
}

}

倒第三行,即obj.add(opt);,程序运行时提示有错误:运行时间错误,对象不支持此属性或方法.

请教高手这是怎么回事啊??哪里有错误??
...全文
160 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dj0628 2005-12-14
  • 打赏
  • 举报
回复
好的,我再看看
xxuu503 2005-12-13
  • 打赏
  • 举报
回复
seled不置空又如何?

不置空调试正确,才算是你猜想正确!
dj0628 2005-12-13
  • 打赏
  • 举报
回复
你把这个弹出来看看
alert(obj)
是不是[object]
置空那个是在后面,报也不能报add这行错误啊
你的倒数第三行是在代码中数的,还是调试出来的,JS中报错的行数不准的。
-----------------------------------------------------------------------------
alert(obj)试了一下,都是[object]

我想应该就是置空的问题,但不知道上面那个应该怎么改阿??
dj0628 2005-12-13
  • 打赏
  • 举报
回复
我仔细试过了,是下面这个函数的载入引起的错误,大家看看是不是因为把seled置空引起的错误??

function onloadFormA() {

addselect(document.thisForm.ComputerAbility,",初级,中级,高级,高校非计算机专业二级,高校非计算机专业三级(偏软),高校非计算机专业三级(偏硬),初级程序员,程序员,高级程序员,系统分析员,网络程序员,网络设计师,全国计算机等级考试一级,全国计算机等级考试二级,全国计算机等级考试三级,全国计算机等级考试四级,微软认证产品专家(MCP),微软认证网站建造专家(MCP+Site Builder),微软认证系统工程师(MCSE),微软认证数据库管理员(MCDBA),微软认证开发专家(MCSD),Cisco职业资格认证CCNA,Cisco职业资格认证CCDP,Cisco职业资格认证CCNP,Cisco职业资格认证CCIE,Oracle8数据库管理员,Lotus资格认证,Lotus-CLS资格认证,Lotus-CLI资格认证,Notes应用开发工程师,Notes系统管理工程师,Notes高级应用开发工程师,Notes高级系统管理工程师,IBM-DB2 Database Administrator,IBM-DB2 Application Developer,IBM-MQSeries Engineer","",",");
if(document.thisForm.ComputerAbility.value.length<1) document.thisForm.ComputerAbility.selectedIndex=2;
document.thisForm.language_One.value="英语";
document.thisForm.l_OneAbility.value="good";
<%if modi=1 then%>
document.thisForm.y_WorkYear.value="<%=trim(rs("gznum"))%>";
document.thisForm.m_WorkYear.value="<%=trim(rs("gznum1"))%>";
document.thisForm.companyWorkedNumber.value="<%=trim(rs("gsnum"))%>";
<%else%>
document.thisForm.otherLanguage.value="";
document.thisForm.y_WorkYear.value="0";
document.thisForm.m_WorkYear.value="0";
document.thisForm.companyWorkedNumber.value="0";

<%end if%>
}
hbhbhbhbhb1021 2005-12-13
  • 打赏
  • 举报
回复
你把这个弹出来看看
alert(obj)
是不是[object]
置空那个是在后面,报也不能报add这行错误啊
你的倒数第三行是在代码中数的,还是调试出来的,JS中报错的行数不准的。
dj0628 2005-12-13
  • 打赏
  • 举报
回复
我怀疑可能是把seled置空会引起错误??
hbhbhbhbhb1021 2005-12-13
  • 打赏
  • 举报
回复
sorry写错了一个地方

function addselect(obj,str,seled,fg)
{
var i=0;
var arrField=str.split(fg);
var num=1;
var j=obj.length;
obj.clear;

for(i=0;i<j;i++) {
obj.remove(0);
}
for(i=0;i<arrField.length;i++)
{
var opt=document.createElement("OPTION");
opt.text=arrField[i];
opt.value=arrField[i];
obj.add(opt);
if(seled!=null)
{
if (arrField[i]==seled)
{
opt.selected=true;
}
}
}

}
hbhbhbhbhb1021 2005-12-13
  • 打赏
  • 举报
回复
function addselect(obj,str,seled,fg)
{
var i=0;
var arrField=str.split(fg);
var num=1;
var j=obj.length;
obj.clear;

for(i=0;i<j;i++) {
obj.remove(0);
}
for(i=0;i<arrField.length;i++)
{
var opt=document.createElement("OPTION");
opt.text=arrField[i];
opt.value=arrField[i];
obj.add(opt);
if(arrField[i]!=null)
{
if (arrField[i]==seled)
{
opt.selected=true;
}
}
}

}

传参数的时候不要传后两个
addselect(document.thisForm.ComputerAbility,",初级,中级,高级,高校非计算机专业二级,高校非计算机专业三级(偏软),高校非计算机专业三级(偏硬),初级程序员,程序员,高级程序员,系统分析员,网络程序员,网络设计师,全国计算机等级考试一级,全国计算机等级考试二级,全国计算机等级考试三级,全国计算机等级考试四级,微软认证产品专家(MCP),微软认证网站建造专家(MCP+Site Builder),微软认证系统工程师(MCSE),微软认证数据库管理员(MCDBA),微软认证开发专家(MCSD),Cisco职业资格认证CCNA,Cisco职业资格认证CCDP,Cisco职业资格认证CCNP,Cisco职业资格认证CCIE,Oracle8数据库管理员,Lotus资格认证,Lotus-CLS资格认证,Lotus-CLI资格认证,Notes应用开发工程师,Notes系统管理工程师,Notes高级应用开发工程师,Notes高级系统管理工程师,IBM-DB2 Database Administrator,IBM-DB2 Application Developer,IBM-MQSeries Engineer");
如果这个成功就说明是置空的问题
dj0628 2005-12-13
  • 打赏
  • 举报
回复
那为什么我把这句拿掉,这个错误就没有了???
xxuu503 2005-12-12
  • 打赏
  • 举报
回复
搂住,测了你的代码,code没有问题!

估计你传参传错了!

那个obj必须是select控件!
dj0628 2005-12-12
  • 打赏
  • 举报
回复
我试了以下天外水火兄给的代码,还是提示错误:
obj.options[obj.selectedIndex]=new Option(arrField[i],arrField[i])

说这一行出现了运行时间错误,对象不支持此属性或方法:(

这到底是怎么回事的啊??
dj0628 2005-12-12
  • 打赏
  • 举报
回复
这么多高手指点,真是谢谢了,我先试试!
xuzuning 2005-12-12
  • 打赏
  • 举报
回复
只有areas, controlRange, options有add方法
检查传入的对象obj是什么
bguest 2005-12-12
  • 打赏
  • 举报
回复
试了一下你的函数,很正常,没什么错误。
addselect(document.all.test.options,"hehe|haha","haha","|")
hbhbhbhbhb1021 2005-12-12
  • 打赏
  • 举报
回复
function addselect(obj,str,seled,fg)
{
var i=0;
var arrField=str.split(fg);
var num=1;
var j=obj.length;
obj.clear;

for(i=0;i<j;i++) {
obj.remove(0);
}
for(i=0;i<arrField.length;i++)
{
obj.options[obj.selectedIndex]=new Option(arrField[i],arrField[i])
var opt=document.createElement("OPTION");
if (arrField[i]==seled)
{
opt.selected=true;
}
}
有可能是在不同框架结构造成的或者找不到对象,你试下上面的可以不?
}

87,994

社区成员

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

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