现在碰到一个问题。表单是动态生成的,个数是不确定的,特定的表单需要生产点击按钮,点击函数中如何获取特定表单节点啊。
    本来以为getElementsByName,可以解决问题,可是在网上查的时候说IE不支持getElementsByName。难道JavaScript就不能通过参数传递获取特定的节点吗?请高手指点,谢谢!

解决方案 »

  1.   

    用jquery获取特定表单节点,很方便的
      

  2.   

    getElementsByTagName("FORM")用这个可以么
    不过最好还是按个规则定出有规律的ID比较好,用getElementById最好
      

  3.   

    遍历 document.forms 这个数组
    然后判断每个 form 的 name
    但是 IE 应该支持 getElementsByName 吧,除非那个标签不支持 name ,比如 <span></span>对于 form 是可以通过 
    getElementsByName("...")[下标] 
    来得到特定表单的
      

  4.   

    首先IE支持getElementsByName(),返回带有指定名称的对象集合。其次不还有getElementsByTagName()和getElementById()吗,肯定可以满足你的程序需求。
      

  5.   

    IE支持getElementsByName呀
    取得的是个数组  <INPUT TYPE="text" NAME="t1" value="111">
      <INPUT TYPE="text" NAME="t1" value="222">
      <INPUT TYPE="text" NAME="t1" value="333">
      <SCRIPT LANGUAGE="JavaScript">
    alert(document.getElementsByName("t1")[1].value);
      </SCRIPT>或者可以把form.name作为函数的参数……
    LZ最好能帖代码, 标明哪一部分是自动生成的,哪一部分是可以控制的……
      

  6.   

    <script type="text/javascript">
    function addMore(hao)
      {
       var td=document.getElementsByName("ttd");
       var br=document.createElement("br");
       var input=document.createElement("input");
       var button=document.createElement("input");
       var input1=document.createElement("input");
       input.type="file";
       input.name="file";
       input.size="1";
       button.type="button";
       button.value="删除";
       button.size="1";
       input1.type="hidden";
       input1.name="filename";
       input1.value=td[hao].firstChild.nextSibling.value;
       alert(input1.value);
       button.onclick=function()
       { 
        td[hao].removeChild(br);
        td[hao].removeChild(input);
        td[hao].removeChild(input1);
        td[hao].removeChild(button);
       }
       
       td[hao].appendChild(br);
       td[hao].appendChild(input);
       td[hao].appendChild(button);
       td[hao].appendChild(input1);
       
      }
      </script><%...........//省略的部分为一个循环。else if是在这个循环下面
    else if(rs.getString("col3")!=null&&!rs.getString("col3").equals(""))
         {
          %>
           <tr style="font-size:13">
            <td align="right" width="100"><%=rs.getString("col0") %></td>
            <td align="right" width="300"><%=rs.getString("col1") %></td>
            <td align="right" width="400"><%=rs.getString("col4") %></td>
            <td align="right" width="300">
            <input type="text" name="col2" size="30"  value="<%=rs.getString("col2") %>">
            <input type="hidden" name="hao" value="<%=rs.getString("col0") %>">
            </td>
            <td align="right" width="200" name="ttd">
            <input type="hidden" name="filename" value="<%=rs.getString("col0") %>">
            <input type="file" name="file" size="1">
            <input type="button" value="继续添加..." onClick="addMore(<%=a %>)" size="1">
            </td>
            </tr>
          <%
          a++;
         }
    ........
    我列出来了部分代码,这段代码主要作用是动态的产生上传文件的按钮,能随时添加上传文件的按钮,同时产生一个type="hidden"的input,且input的value是<%=rs.getString("col0") %>,上面的代码在火狐浏览器中好用,但是在IE中就会提示:'firstChild'为空或不是对象。请高手指点,谢谢!
      

  7.   

    var td=document.getElementsByName("ttd");返回的是一个数组
    改成
    var td=document.getElementsByName("ttd")[0];
      

  8.   

    不能改啊,var td=document.getElementsByName("ttd")[0]只表示td数组中的第一个;参数hao就是td数组的下标。当点击按钮命令就在td[hao]节点执行addMore函数,添加上传文件按钮。
    我对上面的函数改了一下,
    onClick="addMore(<%=a %>)" 改为onClick="addMore(<%=a %>,'<%=rs.getString("col0") %>')", 
    function addMore(hao)改为function addMore(hao,hao1),
    input1.value=td[hao].firstChild.nextSibling.value;改为input1.value=hao1;
    同样在火狐中效果理想,但是在IE中就出现'undefined'为空或不是对象。都郁闷死了,哪位高手帮帮啊,小弟在此谢谢了!
      

  9.   

    楼主用jquery吧,把class设置成相同的,添加事件特别简单
      

  10.   

    用 div  布局吧 每增加一个DIV,顺序地动态增加一个 ID如:  class1 , class2 , class3 ,class4 , class5......这样便于循环,查找节点也方便
      

  11.   

    貌似td和div用document.getElementsByName("tdd")不起作用啊,怎么取length都是0……
    input之类的用getElementsByName没问题
    把lz的代码改成了这个样子
    要是table加不了id的话,就只能用getElementsByTagName试试了 <TABLE id="ttable">
    <tr style="font-size:13">
      <td align="right" width="100">"col0"</td>
      <td align="right" width="300">"col1"</td>
      <td align="right" width="400">"col4"</td>
      <td align="right" width="300">
      <input type="text" name="col2" size="30" value="col2">
      <input type="hidden" name="hao" value="col0">
      </td>
      <td align="right" width="200" name="ttd">
      <input type="hidden" name="filename" value="col0">
      <input type="file" name="file" size="1">
      <input type="button" value="继续添加..." onClick="addMore(0,'col0')" size="1">
      </td>
      </tr>
    <tr style="font-size:13">
      <td align="right" width="100">"col0"</td>
      <td align="right" width="300">"col1"</td>
      <td align="right" width="400">"col4"</td>
      <td align="right" width="300">
      <input type="text" name="col2" size="30" value="col2">
      <input type="hidden" name="hao" value="col0">
      </td>
      <td align="right" width="200" name="ttd">
      <input type="hidden" name="filename" value="col0">
      <input type="file" name="file" size="1">
      <input type="button" value="继续添加..." onClick="addMore(1,'col0')" size="1">
      </td>
      </tr>
     </TABLE>
      <SCRIPT LANGUAGE="JavaScript">
      <!--
      function addMore(hao,hao1)
      {
      var tab = document.getElementById("ttable");
      var td=tab.rows[hao].cells[4];
      var br=document.createElement("br");
      var input=document.createElement("input");
      var button=document.createElement("input");
      var input1=document.createElement("input");
      input.type="file";
      input.name="file";
      input.size="1";
      button.type="button";
      button.value="删除";
      button.size="1";
      input1.type="hidden";
      input1.name="filename";
      input1.value=hao1;
      button.onclick=function()
      {  
      td.removeChild(br);
      td.removeChild(input);
      td.removeChild(input1);
      td.removeChild(button);
      }
      td.appendChild(br);
      td.appendChild(input);
      td.appendChild(button);
      td.appendChild(input1);
      }
      </SCRIPT>
      

  12.   

    zyzy15回答的太对了,我随后发现就是因为我在<td>标签中使用了name,导致document.getElementsByName("tdd")取值无效。不过我没想出这个问题好的解决方法,zyzy15正好给了我好的办法。谢谢你!所以我把分都给你了。谢谢!