function addRow()
        {
            var html=document.getElementById('uploadPhotodiv').innerHTML;
            if(html=="")
            {
                html='<input type="file" name="fileUpload1" id="fileUpload1" />';
            }
            else
            {
                var obj=document.getElementById('uploadPhotodiv').getElementsByTagName('input');
                html+='<br /><input type="file" name="fileUpload'+(obj.length+1)+'" id="fileUpload'+(obj.length+1)+'" />';
            }
            
            document.getElementById('uploadPhotodiv').innerHTML=html;
        }我用这种办法添加了上传html标记,当选好了上传路径再来调用这个函数的话就会将刚选择的路径丢失,有什么办法容易保存态状的没啊?

解决方案 »

  1.   

    试试孟子的方法<HTML>
      <HEAD>
        <title>多文件上传</title>
        <script language="JavaScript">
        function addFile()
        {
         var str = '<INPUT type="file" size="50" NAME="File">'
         document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)
        }
        </script>
      </HEAD>
      <body>
        <form id="form1" method="post" runat="server" enctype="multipart/form-data">
          <center>
            <asp:Label Runat="server" ID="MyTitle"></asp:Label>
            <P id="MyFile"><INPUT type="file" size="50" NAME="File"></P>
            <P>
              <input type="button" value="增加(Add)" onclick="addFile()">
              <asp:Button Runat="server" Text="上传" ID="Upload"></asp:Button>
              <input onclick="this.form.reset()" type="button" value="重置(ReSet)">
            </P>
          </center>
          <P align="center">
            <asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True"
             Font-Size="9pt" Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
          </P>
        </form>
      </body>
    </HTML>
      

  2.   


    <body>
    <SCRIPT language=javascript>
    <!--
    var k=0
    function addRow(){
    var obj=document.getElementById('uploadPhotodiv')
    if (k>0){
    var newBr=document.createElement("br")
    obj.appendChild(newBr)
    }
    k++
    var newSpan=document.createElement("span")
    obj.appendChild(newSpan)
    newSpan.innerHTML='<input id="fileUpload'+k+'" type="file" name="fileUpload'+k+'" size="20">'
    obj.appendChild(newSpan)
    }
    //-->
    </SCRIPT><div id=uploadPhotodiv></div>
    <input type=button onclick="addRow()" value="add">
    </body>
      

  3.   

    通过obj.innerHTML=html 方法也是不能为 file 控件预设 文件位置的,这个方法不能执行是由于浏览器的安全问题。设想如果你能通过给 file 指定的一个要上传的文件,服务器会有能力在你访问时自动将你的客户机器上随意指定文件上传到服务器上,这样对客户端来说是一个灾难。考虑在div里单独指定一个不包含该 file 控件的 div,为这个 div.innerHTML=html 来增加新的 file 控件;
    或在一表格中动态增加一行包括一个 file 控件;
    或采用 dom 方法,使用 js 增减附件个数,类似 163邮箱的方式。