none
求助:在ascx文件中添加JavaScript代码无法实现其功能 RRS feed

  • 问题

  • 我在ascx文件添加JavaScript代码的时候无法实现应有的功能,如果保存成html文件该功能又是正常的。我把代码贴上,请高手帮忙指点。

                 
    <script language="JavaScript" type="text/javascript"><!--
                        var num = 1;
                        var num1 = 1;
                        var pre = 1;
                        function addfile() {
                            pre = num1;
                            ++num1;
                            var str = '<input id="' + num1 + '"  type="file" size="50" name="file" onchange="show(this);addfile();">';
                            document.getElementById(pre).style.display = 'none';
                            document.getElementById('MyFile').insertAdjacentHTML("beforeBegin", str);
                        }
                        function show(id) {
                            num++;
                            if (num > 11) {
                            } else {
                                var s = '<img id="' + num + '1" height="150" width="150" />';
                                document.getElementById("aImg").insertAdjacentHTML("beforeEnd", s);
                                var dd = document.getElementById(num + "1");
                                dd.src = id.value;
                            }
                        }   
           
    // --></script>  
    
        <form id="form10" method="post"  enctype="multipart/form-data">  
            <div id="aImg">  
            </div>  
            <div align="center">  
                <h3>  
                    多文件上传</h3>  
                <p id="MyFile">  
                    <input type="file" id="1"  size="50" name="File" onChange="addfile();show(this)"></p>  
                <p>  
                    <asp:Button runat="server" Text="开始上传" ID="UploadButton" OnClick="UploadButton_Click">  
                    </asp:Button>  
                    <asp:Button ID="Button6" runat="server" Text="增加图片" />  
                </p>  
                <p>
                    &nbsp;</p>
                <p>
                    <input ID="File1" type="file" /></p>
                <p>  
                    <asp:Label ID="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"  
                        Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>  
                </p>  
            </div>  
        </form>  
    
    
                
                   </td></tr>
               <tr><td align="center">上传到:<asp:DropDownList ID="picid" runat="server" 
                       DataTextField="albumname" DataValueField="pid">
                   </asp:DropDownList>
                   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <asp:Button ID="Button5" runat="server" Text="上 传" 
                       onclick="Button5_Click"  /></td></tr>
               <tr><td style="height:20px"></td></tr>
       </table>
       </div>
       
    </asp:Panel>
    2009年8月22日 5:14

答案

全部回复

  • 您好,使用用户控件时,元素的ID会发生变化,您可以通过查看源代码来查看,例如:<input type="file" id="1",的id已不是1了。
    因此会在document.getElementById出错, 可以通过<%=控件.ClientID%>来获取ID.
    2009年8月22日 6:06
    版主
  • 不明白你的意思呢,为什么元素的ID会变化?我试了也没看到有变化啊

    2009年8月22日 6:28
  • 抱歉,这个是对服务器控件的名字才会改,一下没看清,您定义的这几个都不是服务器控件,不会改名字。
    能否贴出错误信息。

    2009年8月22日 6:43
    版主
  • 在看了一下您的代码,
    1、在form中放入了服务器端控件。这个form必须是runat=server的。
     2、即使加了runat=server也会出错,因为用户控件需要在一个form下运行,这样形成了一个form嵌套,这个违反了webform机制
    2009年8月22日 6:52
    版主
  • form不能嵌套。所以你可以做个独立的aspx来实现这个功能。然后将这个东西放在iframe里,
    【孟子E章】
    2009年8月22日 10:33
    版主
  • 用户控件 不要加form元素   不然 的话 嵌套的
    因为你在用户控件创建的控件的id 和aspx和创建控件的id正好冲突 服务器自动给相同的id一个控件取了新的id

    2009年8月22日 11:10
  • 你好,

    用户控件不能添加Form标签,会导致页面出现两个Form。
    Js的document.getElementById('MyFile')改为document.getElementById('<%= MyFile.ClientID %>')。原因页面生成HTML的时候,控件名称发生改变。
    jon.valett@gmail.com
    2009年8月22日 17:50
    版主
  • 你好 建议采用 UniqueID
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年8月23日 4:30
    版主
  • 你好 建议采用 UniqueID
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond

    这个属性属于在服务端使用吧?
    2009年8月23日 5:05