if (eval("document.form1.serialno"+i+".value")==""){
      eval("document.form1.serialno"+i).value=eval("document.form1.oldserialno"+k+".value");

解决方案 »

  1.   

    我推荐使用 document.form[objectname].value的方式,这样程序编写比较容易。if(document.form1["serialno"+i].value=="")
         document.form1["serialno"+i].value = document.form1["oldserialno"+k].value;
      

  2.   

    我的思路有点本质上的不同:创建i个INPUT元素,然后在全局数组pubSerials()里记载所有i个元素的引用。这样你可以利用pubSerials()来检索任何一个INPUT元素。pubSerials()的序号和name是一一对应的。想设置value只要pubSerials(N).value="楼主是个大坏蛋"就可以了。不用name来检索。当然你可以可以使用name(比如用于提交表单)。很抱歉我不会JavaScript,只能用VBScript给你例子,希望你能明白我的意思。Dim pubSerials()
    ReDim pubSerials(1 To i)For tLoop=1 To i
      Set pubSerials(tLoop)=SerialGetByCreate(document,Form1,"Serial" & tLoop )
    NextFunction SerialGetByCreate(pDocument,pInsertObject,pName)
      Set tElement=pDocument.createElement("<INPUT name='" & pName & "'>") 
      'document.createElement方法创建一个INPUT元素,Name必须在创建时刻给定。Set相当于JS里的Var
      pInsertObject.insertAdjacentElement "beforeEnd",tElement
      '插入元素到目标元素内部,beforeEnd是该元素的结尾之前,所有内容之后。
      Set SerialGetByCreate=tElement
      '函数返回INPUT的引用。
    End Function
      

  3.   

    3Q!
    qiushuiwuhen(秋水无恨) 的方法试用通过了。
    stroll(小逛)的测试不成。<_>
    KiteGirl(小仙妹)你的方法在同一页面内处理较了,但在传参给下一页处理时,会有些麻烦了。
      

  4.   

    eval,还可以使用document.formName.elements[i]来得到元素。
      

  5.   

    FT~~ 我还常用着~~难道是IE版本问题……?我觉得eval()在处理如果需要引号过多的表达式的话不好看也不好处理那就换个正规点的…… document.formname.all("name")例子:
    <body onclick='var i=1;alert(document.bb.all("T"+i).value)'>
    <form name="bb">
    <p>
    <input type="text" name="T1" size="20" value="不要告诉我这次还不行……">
    </p>
    </form>
    </body>
      

  6.   

    To tjgok(谭):我想弄清楚…… 你的IE的版本是多少?我让有也只有5.5/6.0的网友测试都通过了,就是没找到一个5.0的…… 对于document.formname["name"]这样的访问方式,从 for(key in obj)的可行性考虑,应该可以这样进行访问的呀……怎么会~~能不能告诉我你的IE版本,谢谢啦,要不然我以前写的HTC组件很多都要重写了……