在javascript中找到DataList中的Div

时间:2014-04-20 17:07:40

标签: javascript asp.net datalist

我在asp:DataList中有一个div,其中包含一些其他div。我试图通过document.getElementByID("")找到div。

它叫:Unable to get property 'style' of undefined or null reference.

因此,我了解.getElementById无法找到它。 那怎么才能得到它们? 我试图通过旧帖子找到我的datalist,但没有一个与我的问题相符。

注意:我的divs应该被拖动,而且它们会被拖动,但由于这个问题,我无法获得其职位的价值。

代码:

function FullDragging() {
   // some code
   var dd = document.getElementById("DesigningDiv"); // frame
   var logoObject = document.getElementById("logoObject"); // draggable element
   var nameObject = document.getElementById("nameObject"); // draggable element

   function getDesigningDivSize() {
            var dd = document.getElementById("DesigningDiv");
            var aspDesigningDivHF = document.getElementById('<%=aspDesigningDivHF.ClientID %>'); // hidden-field which sends the changes in client-side to the server.
            aspDesigningDivHF.value = parseInt(dd.style.width) + "," + parseInt(dd.style.height);
        }
}
window.onload = FullDragging;

因为该函数被称为onload,错误也会出现onload。

HTML:

<asp:DataList ID="DataList1" runat="server" DataKeyField="ProductID" Height="400px" Width="1400px" OnEditCommand="DataList1_EditCommand" OnItemCommand="DataList1_ItemCommand" CellPadding="40" RepeatColumns="2" RepeatDirection="Horizontal" OnCancelCommand="DataList1_CancelCommand" OnItemDataBound="DataList1_ItemDataBound" OnUpdateCommand="DataList1_UpdateCommand">
 <ItemTemplate> ... </ItemTemplate>
 <EditItemTemplate>
  <div id="DesigningDiv" style="height: 150px; width: 262.5px; border-style: groove; border-color: inherit; border-width: 1px; position: relative; height: 158px; width: 270px; background-color: #FFFFFF; visibility: hidden">
  <div id="logoObject" style="width: 51px; top: 31px; position: absolute; height: 34px; font-family: 'times New Roman', Times, serif; font-size: xx-large; font-weight: bold; color: #333333; cursor: move; left: 187px;"> logo </div>              
  <div id="nameObject" style="width: 61px; top: 31px; position: absolute; height: 22px; font-family: 'times New Roman', Times, serif; color: #666666; font-size: large; cursor: move; font-weight: bold; left: 29px; bottom: 105px;"> full name </div>
 </EditItemTemplate>
</asp:DataList>

1 个答案:

答案 0 :(得分:0)

一些问题,您不应该使用静态ID填充项目模板,因为ID只应在html文档中出现一次。

考虑将一个类应用于这些div并以这种方式引用它们。

呈现页面后,右键单击并检查其中一个元素。 ASP可能会为您的ID添加一个额外的前缀,因为它是一个数据列表的一部分(例如,一旦页面加载,Visual Studio中的DivLabel1变为DataList1_DivLabel1)javascript不在这个转换中,所以你最好不要引用这些项目按班级