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;
}
}
有可能是在不同框架结构造成的或者找不到对象,你试下上面的可以不?
}

解决方案 »

  1.   

    试了一下你的函数,很正常,没什么错误。
    addselect(document.all.test.options,"hehe|haha","haha","|")
      

  2.   

    只有areas, controlRange, options有add方法
    检查传入的对象obj是什么
      

  3.   

    我试了以下天外水火兄给的代码,还是提示错误:
    obj.options[obj.selectedIndex]=new Option(arrField[i],arrField[i])说这一行出现了运行时间错误,对象不支持此属性或方法:(这到底是怎么回事的啊??
      

  4.   

    搂住,测了你的代码,code没有问题!估计你传参传错了!那个obj必须是select控件!
      

  5.   

    我怀疑可能是把seled置空会引起错误??
      

  6.   

    你把这个弹出来看看
    alert(obj)
    是不是[object]
    置空那个是在后面,报也不能报add这行错误啊
    你的倒数第三行是在代码中数的,还是调试出来的,JS中报错的行数不准的。
      

  7.   

    我仔细试过了,是下面这个函数的载入引起的错误,大家看看是不是因为把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%>
    }
      

  8.   

    你把这个弹出来看看
    alert(obj)
    是不是[object]
    置空那个是在后面,报也不能报add这行错误啊
    你的倒数第三行是在代码中数的,还是调试出来的,JS中报错的行数不准的。
    -----------------------------------------------------------------------------
    alert(obj)试了一下,都是[object]我想应该就是置空的问题,但不知道上面那个应该怎么改阿??
      

  9.   

    seled不置空又如何?不置空调试正确,才算是你猜想正确!
      

  10.   

    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");
    如果这个成功就说明是置空的问题
      

  11.   

    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;
    }
    }
    }}