为什么JScript运行时错误:预期的对象

时间:2009-09-12 02:20:27

标签: javascript jquery asp.net vb.net

我正在尝试使用jquery或jscript来点击隐藏按钮,我总是得到 “Microsoft JScript运行时错误:预期的对象”错误。

我已经尝试了以下所有方法(所有结果都相同):

$('#btnCompleteHidden').click();or:
$('#btnCompleteHidden').trigger('click');With plain JavaScript:
document.getElementById('btnCompleteHidden').onclick();
$('#<%=btnCompleteHidden.ClientID %>').click();Or:
document.getElementById('<%=btnCompleteHidden.ClientID %>').click();

我已经尝试使按钮可见并且结果仍然相同。

我将在这里发布aspx页面:

    <script type="text/javascript">
        function FileDownloader_DownloadStep(Step){
        //The file list is going to be downloaded - "2 = About to Start" 
        if (Step == 2){
            //Dynamically build the filelist for the downloader
            getFileDownloader("FileDownloader").setFileList("GetFileList.aspx");
        }
        //The user has confirmed the download - "6 = File Download About to Start"
        if (Step == 6){
            //Perform the initialization updates to the first file only
            var xmlhttp; 
            if (typeof XMLHttpRequest != 'undefined') { 
                xmlhttp = new XMLHttpRequest(); 
            } 
            if (!xmlhttp) { 
                throw "Browser doesn't support XMLHttpRequest."; 
            } 
            var data = ""; 
            xmlhttp.open("POST", "UpdateVideoInitiated.aspx", true); 
            //Send the proper header information along with the request 
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
             //xmlhttp.setRequestHeader("Content-length", data.length); 
            xmlhttp.setRequestHeader("Connection", "close"); 
            xmlhttp.send(data); 
        }
    }
        function onDownloadItemComplete(Result, ErrorPage, Url, FileName, ContentType, FileSize){
            var xmlhttp;
            var data;

            //The handler will display the error description or updates as noted
            switch (Result){
                        //Update the completed file as complete and then perform initialization updates to the next file only
                case 1: if (typeof XMLHttpRequest != 'undefined') { 
                            xmlhttp = new XMLHttpRequest(); 
                        } 
                        if (!xmlhttp) { 
                            throw "Browser doesn't support XMLHttpRequest."; 
                        } 
                        data = FileName; 
                        xmlhttp.open("POST", "UpdateVideoDownloaded.aspx?FileName=" + FileName + "&FileSize=" + FileSize, true); 
                        //Send the proper header information along with the request 
                        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
                         //xmlhttp.setRequestHeader("Content-length", data.length); 
                        xmlhttp.setRequestHeader("Connection", "close"); 
                        xmlhttp.send(data); 
                        break;
                case 2: alert("An error has occurred while downloading the file " + FileName);
                        break;
                        //Update any skipped files to back off the initialization updates to the passed file only
                case 3: if (typeof XMLHttpRequest != 'undefined') { 
                            xmlhttp = new XMLHttpRequest(); 
                        } 
                        if (!xmlhttp) { 
                            throw "Browser doesn't support XMLHttpRequest."; 
                        } 
                        data = FileName; 
                        xmlhttp.open("POST", "UpdateVideoSkipped.aspx?FileName=" + FileName, true); 
                        //Send the proper header information along with the request 
                        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
                         //xmlhttp.setRequestHeader("Content-length", data.length); 
                        xmlhttp.setRequestHeader("Connection", "close"); 
                        xmlhttp.send(data); 
                        break;        
                case 4: alert("The server returned a wrong MIME type (should be " + ContentType + ") for the file " + FileName);
                        break;
                case 5: alert("The server returned a wrong size (should be " + FileSize + ") for the file " + FileName);
                        break;
                case 6: alert("An error has occurred while writing the file " + FileName + " to disk");
                        break;
                case 7: alert("The file " + FileName + " could not be found on the " + "server");
                        break;
                case 8: alert("Access to the file " + FileName + " denied");
                        break;
                case 9: alert("Time out while downloading the file " + FileName);
                        break;
            }
        }
        function onDownloadComplete(Result){
            //The handler will display the error description
            switch (Result){
                        //Update the member download statistics and rebind the grid 
                case 0: $('#btnCompleteHidden').click();
                        break;
                case 1: alert("An error has occurred while creating the file list");
                        break;        
                case 2: alert("An error has occurred while downloading the file list");
                        break;
                case 3: alert("The file list is empty");
                        break;
                case 7: alert("The file list could not be found on the server");
                        break;
                case 8: alert("Access to the file list denied");
                        break;
                case 9: alert("Time out while downloading the file list");
                        break;
            }
        }
</script>

<div class="borderDiv">
     <table cellspacing="0" class="borderTable0" width="100%">
         <tr>
            <td class="Subhdr" >
                <asp:label id="lblScreenHeader" Cssclass="ScreenHdr" runat="server" Height="24px">Member Video Download Detail</asp:label>
            </td>
        </tr>
    </table>
    <div class="NinetyNine5PercentWide SolidThreePixelBorder" style="background-color:White">
        <div class="OneHundredPercentWide EightPixelTopMargin TenPixelBottomMargin">
            <div class="FileListHdr">
                &nbsp;&nbsp;&nbsp;&nbsp;
                <span>Current Escrow Balance (Available for Future Use):</span>
                &nbsp;&nbsp;
                <asp:label ID="lblAvailableBalance" Cssclass="FileListHdr" runat="server" >$280.00</asp:label>
                &nbsp;&nbsp;&nbsp;&nbsp;
                <asp:label ID="lblAvailableBalanceMessage" Cssclass="FileListHdr" runat="server" ></asp:label>
            </div>
        </div>
        <div class="NinetyNinePercentWide">
            <div class="FileListHdr EightPixelBottomMargin">
                &nbsp;&nbsp;&nbsp;&nbsp;
                <span class="FileListHdr" >Number of Files Selected for Download:</span>
                &nbsp;
                <asp:label ID="lblTotalFiles" Cssclass="FileListHdr" runat="server" ></asp:label>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <span class="FileListHdr" >Total MBytes:</span>
                &nbsp;
                <asp:label ID="lblTotalMBytes" Cssclass="FileListHdr" runat="server" ></asp:label>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <span class="FileListHdr" >Estmated Download Time:</span>
                &nbsp;
                <asp:label ID="lblEstimatedTime" Cssclass="FileListHdr" runat="server" ></asp:label>
                <asp:Button id="btnCompleteHidden" runat="server" Text="CH" Style="visibility: hidden"
                    Enabled="true" OnClick="btnCompleteHidden_OnClick"></asp:Button>
            </div> 
        </div>
        <div class="NinetyNinePercentWide">
            <div class="OneHundredPercentWide">
                <div class="DivDownload" >
                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <script type="text/javascript">
                        //Create JavaScript object that will embed File Downloader to the page
                        var fd = new FileDownloaderWriter("FileDownloader", 170, 28);

                        //For ActiveX control full path to CAB file (including file name) should be specified
                        fd.activeXControlCodeBase = "aurigma/FileDownloader2.cab";
                        fd.activeXControlVersion = "2,0,16,0";

                        //Set the Download button text
                        fd.addParam("ButtonDownloadText", "DOWNLOAD NOW");

                        //Set the Download button background color
                        //fd.addParam("BackgroundColor", "#E0EBFF");
                        fd.addParam("BackgroundColor", "White");

                        //Set the Download button regular image
                        fd.addParam("ButtonDownloadImageFormat", "width=170;height=28;BackgroundColor=White;" + 
                            "urlNormal=App_Themes/Default/images/BtnDownload.jpg;" +
                            "urlHover=App_Themes/Default/images/BtnHover.jpg;" +
                            "urlPressed=App_Themes/Default/images/BtnPressed.jpg;" +
                            "urlDisabled=App_Themes/Default/images/BtnPressed.jpg");

                        //Set license key 
                        fd.addParam("LicenseKey", "73020-10000-D8066-8CFDB-84249");

                        //Set reconnect attampts count
                        fd.addParam("ReconnectAttemptsCount", "360");

                        //Set reconnect timeout value (30000 = 10 seconds)
                        fd.addParam("ReconnectTimeOut", "10000");

                        //The following listener will perform some actions when the file list is about to be downloaded
                        fd.addEventListener("DownloadStep", "FileDownloader_DownloadStep");

                        //The following listener will perform some actions when download of a single file is finished
                        fd.addEventListener("DownloadItemComplete", "onDownloadItemComplete");

                        //The following listener will perform some actions when download process is complete
                        fd.addEventListener("DownloadComplete", "onDownloadComplete");

                        //The following listener will perform some actions when a general error is detected
                        //fd.addEventListener("Error", "onError");

                        //Add page load listener
                        //fd.fullPageLoadListenerName = "fullPageLoad";

                        //Set instructions property
                        fd.instructionsEnabled = true;

                        //Tell File Downloader writer object to generate all necessary HTML code to embed File Downloader into the page
                        fd.writeHtml();
                    </script>
                 </div> 
                 <div class="FileListHdr">
                    <asp:RadioButtonList id="rblMemberMachine" runat="server" Font-Bold="True" BackColor="White" ToolTip="Please select machine for downloading" 
                            CssClass="Radio FileListHdr" RepeatDirection="Horizontal" textAlign="right" BorderStyle="None"
                            AutoPostBack="True" OnSelectedIndexChanged="rblMemberMachine_SelectedIndexChanged" >
                            <asp:ListItem Text="Machine 1" Value="1" Selected="True"></asp:ListItem>
                            <asp:ListItem Text="Machine 2" Value="2"></asp:ListItem>
                            <asp:ListItem Text="Machine 3" Value="3"></asp:ListItem>
                    </asp:RadioButtonList>
                 </div>
             </div>
          </div>
       </div>
    <div class="OneHundredPercentWide" >
        <asp:Panel ID="Panel1" runat="server" Width="100%" >
            <asp:GridView id="grvSessionOrderDownloads" runat="server" BorderWidth="2px" BorderStyle="Solid" BorderColor="#C0C0FF"
                Font-Names="Arial" Font-Bold="True" Font-Size="8pt" GridLines="Horizontal" AutoGenerateColumns="False" 
                HorizontalAlign="Left" ForeColor="Blue" CellPadding="2" AllowSorting="True" Width="100%"
                OnRowDataBound="grvSessionOrderDownloads_OnRowDataBound" >

                <HeaderStyle Font-Names="Arial" HorizontalAlign="Center" ForeColor="White" BackColor="#152EE5" 
                    CssClass="sessionOrderDownloadHeaders" Font-Size="Medium" />
                <RowStyle BackColor="White" ForeColor="#333333" />
                <AlternatingRowStyle BackColor="#A5B0FF" />

                <Columns>
                    <asp:BoundField Visible="False" DataField="SORD_ID" HeaderStyle-Width="0px" >
                        <HeaderStyle Width="0px" />
                    </asp:BoundField>
                    <asp:TemplateField HeaderStyle-Width="0px" >
                        <ItemTemplate>
                            <asp:CheckBox Visible="False" Enabled="false" ID="HiddenCheckBox" runat="server"
                                 Checked='<%# Eval("SORD_SelectedForDownloadFlag") %>' />
                        </ItemTemplate>
                        <HeaderStyle Width="0px" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Select Files" HeaderStyle-ForeColor="White" > 
                        <ItemTemplate >
                            &nbsp;&nbsp;&nbsp;
                            <asp:ImageButton id="btnSelectVideo" runat="server" CommandArgument='<%# Eval("SORD_ID") %>' 
                                 CommandName="CheckUncheckVideo" ImageUrl='<%# GetCheckboxImage(Container.DataItem) %>' 
                                 Enabled='<%# Eval("SORD_EnableSelectionCheckBox") %>'
                                 Visible='<%# Eval("SORD_EnableSelectionCheckBox") %>'/>
                        </ItemTemplate>
                        <HeaderStyle Width="4%" />
                        <ItemStyle VerticalAlign="Bottom" />
                    </asp:TemplateField>
                    <asp:BoundField DataField="SORD_OSTA_ID" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="Status">
                        <HeaderStyle Width="6%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_Topic" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="General <br /> Topic" HtmlEncode="false" >
                        <HeaderStyle Width="15%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_Session" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="Session <br /> YYMMDD" HtmlEncode="false" DataFormatString="{0:00-00-00}" >
                        <HeaderStyle Width="6%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_FileExtension" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="File <br /> Type" HtmlEncode="false" >
                        <HeaderStyle Width="5%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                    <asp:BoundField DataField="SORD_SessionTitle" ReadOnly="True" HeaderStyle-ForeColor="White"
                        HeaderText="Presentation's Video-Title <br /> &nbsp;&nbsp; (or) Support-File Name" HtmlEncode="false" >
                        <HeaderStyle Width="29%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>   
                    <asp:BoundField DataField="SORD_VideoUnlockKey" ReadOnly="True" HeaderStyle-ForeColor="White" 
                        HeaderText="File Unlock <br /> Password" HtmlEncode="false" >
                        <HeaderStyle Width="15%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>  
                    <asp:BoundField DataField="SORD_LastDownloadDate"  
                        ReadOnly="True" HeaderStyle-ForeColor="White" HeaderText="Last <br /> Download" htmlEncode="False"
                        DataFormatString="{0:d}" >
                        <HeaderStyle Width="10%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>   
                    <asp:BoundField DataField="SORD_RemainingDownloads"  
                        ReadOnly="True" HeaderStyle-ForeColor="White" HeaderText="Remaining <br /> Downloads" htmlEncode="False" DataFormatString="{0:##0}" >
                        <HeaderStyle Width="10%" />
                        <ItemStyle CssClass="sessionOrderDownloadItems" />
                    </asp:BoundField>
                </Columns>

            </asp:GridView>
        </asp:Panel>
    </div>
</div> 
<br />
&nbsp;&nbsp;&nbsp;
<asp:Label ID="Errormsg" runat="server" ForeColor="#CC0000"></asp:Label>

4 个答案:

答案 0 :(得分:4)

几点想法:

  1. 您是否将jQuery脚本文件包含在此页面中?这可能会解释有关“$”变量的错误消息的问题。

  2. 使用click()而不是onclick()来触发点击事件。 onclick是在单击元素时触发的处理程序,但不用于启动事件本身。

  3. 由于ASP.NET命名空间及其确保客户端上的唯一元素ID的目标,元素的id可能不是您在页面中定义的内容。一个简单的方法就是在渲染页面上查看源代码并找到您的按钮及其“真实”ID。

  4. 正如本文评论中所提到的,jQuery脚本必须通过<script>标签在页面中引用jQuery函数才能生效。

  5. 编辑:添加了第4点。

答案 1 :(得分:0)

我没有看到任何带有“Button”的ASP元素。不应该是这样的:

$('#<%=btnCompleteHidden.ClientID %>').click();

我在这一行看到了你的javascript代码:

        switch (Result){
                    //Update the member download statistics and rebind the grid 
            case 0: $('#btnCompleteHidden').click();

这不起作用,因为您应该使用ClientID而不是服务器端ID。

        switch (Result){
                    //Update the member download statistics and rebind the grid 
            case 0: $('#<%=btnCompleteHidden.ClientID %>').click();

这应该有效

答案 2 :(得分:0)

对我来说,问题出在页面中包含的外部javascript文件中。 在那个文件中,我调用了不存在的功能(注释掉了)。删除对未定义函数的调用后,问题得到解决

答案 3 :(得分:0)


如果您在较旧的IE浏览器上进行测试并且未清除缓存,则可能是您的页面未进行任何更改而呈现。

试试这个:

  
      
  1. 使用 Ctrl + Shift +清除浏览器的缓存   删除

  2.   
  3. 使用 Ctrl + F5

  4. 刷新浏览器窗口   


希望您的更改现在可以呈现,只要它在语法上是正确的。否则,我听说通常在开发时关闭缓存是个好主意。