无法阅读财产'儿童'未定义的

时间:2015-08-19 18:28:53

标签: javascript asp.net undefined

这是我的javascript代码。在ASP.net C#中。早先也没错。但突然崩溃了。

我不知道出了什么问题。这段代码我想在gridview中对文本的id进行子串,并将其保存到数组中并发送到方法SetCompareID后面的c#代码以保存在cookie中。

错误:无法读取属性'儿童'未定义的

请帮助我。



function compareClick() {

            var checkbox_count = 0;
            var compare = [];
            var grdView = document.getElementById('body_GridView1');
            var intRowCount = grdView.rows.length;
            if (intRowCount > 0) {

                for (var i = 0; i < intRowCount; i++) {
                    var chkType = grdView.rows[i].cells[5].children[0];
                    if (chkType.type == 'checkbox')
                        if (chkType.checked) {
                            {
                                var txtType = grdView.rows[i].cells[0].children[0]

                                var newText = txtType.toString();
                                newText = newText.substring(newText.lastIndexOf('=') + 1);
                                compare.push(newText);
                                checkbox_count += 1;
                            }
                        }
                }
                PageMethods.SetCompareID(compare);
                updateCookie();
                $("#compare_count").html(checkbox_count);
            }
        }
&#13;
&#13;
&#13;

这是GridView1代码

<asp:GridView ID="GridView1" 
runat="server" AllowPaging="True" AllowSorting="True" ShowHeader="False" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" Width="100%">

                <AlternatingRowStyle BackColor="White" />
                <Columns>

                    <asp:TemplateField Visible="false">
                        <ItemTemplate>
                            <asp:Label ID="id" runat="server" Text='<%# Eval("id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:TemplateField ItemStyle-Width="25%">
                        <ItemTemplate>
                            <asp:HyperLink runat="server" NavigateUrl='<%# Eval("id","~/detail.aspx?id={0}") %>'>
                                    <img src='<%# Eval("image") %>' alt="Read online" />
                            </asp:HyperLink>
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:HyperLinkField DataNavigateUrlFields="id" ItemStyle-Width="20%" ItemStyle-Font-Size="21px" DataNavigateUrlFormatString="detail.aspx?id={0}" DataTextField="name"></asp:HyperLinkField>

                    <asp:TemplateField ItemStyle-Font-Size="17px">
                        <ItemTemplate>
                            <%# Eval("detail").ToString().Length>150 ? (Eval("detail") as string).Substring(0,150)+"..." : Eval("detail") %>
                        </ItemTemplate>
                    </asp:TemplateField>

                    <asp:BoundField DataField="rent" ItemStyle-Width="8%" ItemStyle-Font-Size="17px" DataFormatString="ค่าเช่า {0} ต่อเดือน" SortExpression="rent"></asp:BoundField>
                    <asp:BoundField DataField="deposit" ItemStyle-Width="10%" ItemStyle-Font-Size="17px" DataFormatString="ค่ามัดจำ {0} บาท" SortExpression="deposit"></asp:BoundField>
                    <asp:TemplateField ItemStyle-Width="14%">
                        <ItemTemplate>
                            <asp:CheckBox runat="server" ID="compareRow" Text="เปรียบเทียบ" onclick="compareClick()" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
                <EditRowStyle BackColor="#2461BF" />
                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#FE0048" ForeColor="#D85709" HorizontalAlign="Center" />
                <RowStyle BackColor="#EFF3FB" />
                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#F5F7FB" />
                <SortedAscendingHeaderStyle BackColor="#6D95E1" />
                <SortedDescendingCellStyle BackColor="#E9EBEF" />
                <SortedDescendingHeaderStyle BackColor="#4870BE" />
            </asp:GridView>

1 个答案:

答案 0 :(得分:0)

无法读取undefined的值只意味着一件事,值没有设置,所以在你的情况下,它是两件事之一:

cells[5].children[0];
grdView.rows[i].cells[0].children[0]

cells[5]不存在,或者cells[0]不存在,请检查行号,然后您就会知道导致问题的值。

最可能的,当然是ceslls[5]

你可以做点什么:

var chkType = if(grdView.rows[i].cells[5])grdView.rows[i].cells[5].children[0];

如果错误停止发生,则肯定是值错误,您可以调查它未设置的原因。