2016-12-06 2 views
0

Я создал DropDownList с флажками
Была ошибка в ЯШАХ:Ошибка JavaScript: невозможно получить свойство «стиль» неопределенной или нулевой ссылки?

document.onclick = check; 
function check(e) { 
    var target = (e && e.target) || (event && event.srcElement); 
    var obj = document.getElementById('divChkList'); 
    var obj1 = document.getElementById('ddlChkList'); 
    if (target.id != "alst" && !target.id.match("chkLstItem")) { 
     if (!(target == obj || target == obj1)) { 
      obj.style.display = 'none' 
     }  

HTML:

<table> 
     <tr> 
      <td valign="top" style="width: 165px"> 
        <asp:PlaceHolder ID="phDDLCHK" runat="server"></asp:PlaceHolder> 
      </td> 
      <td valign="top"> 
        <asp:Button ID="btn" runat="server" Text="Get Checked" OnClick="btn_Click" /> 
      </td> 
      <td valign="top"> 
        <asp:Label ID="lblSelectedItem" runat="server"></asp:Label> 
      </td> 
     </tr> 
</table> 
<asp:HiddenField ID="hidList" runat="server" /> 

Вот код CS в Page_Load
Здесь я определил DropDownList:

DropDownList ddl = new DropDownList(); 
     ddl.ID = "ddlChkList"; 
     ListItem lstItem = new ListItem(); 
     ddl.Items.Insert(0, lstItem); 
     ddl.Width = new Unit(155); 
     ddl.Attributes.Add("onmousedown", "showdivonClick()"); 
     CheckBoxList chkBxLst = new CheckBoxList(); 
     chkBxLst.ID = "chkLstItem"; 
     chkBxLst.Attributes.Add("onmouseover", "showdiv()"); 
     DataTable dtListItem = GetListItem(); 
     int rowNo = dtListItem.Rows.Count; 
     string lstValue = string.Empty; 
     string lstID = string.Empty; 
     for (int i = 0; i < rowNo - 1; i++) 
     { 
      lstValue = dtListItem.Rows[i]["Value"].ToString(); 
      lstID = dtListItem.Rows[i]["ID"].ToString(); 
      lstItem = new ListItem("<a href=\"javascript:void(0)\" id=\"alst\" style=\"text-decoration:none;color:Black; \" onclick=\"getSelectedItem(' " + lstValue + "','" + i + "','" + lstID + "','anchor');\">" + lstValue + "</a>", dtListItem.Rows[i]["ID"].ToString()); 
      lstItem.Attributes.Add("onclick", "getSelectedItem('" + lstValue + "','" + i + "','" + lstID + "','listItem');"); 
      chkBxLst.Items.Add(lstItem); 
     } 
     System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div"); 
     div.ID = "divChkList"; 
     div.Controls.Add(chkBxLst); 
     div.Style.Add("border", "black 1px solid"); 
     div.Style.Add("width", "160px"); 
     div.Style.Add("height", "180px"); 
     div.Style.Add("overflow", "AUTO"); 
     div.Style.Add("display", "none"); 
     phDDLCHK.Controls.Add(ddl); 
     phDDLCHK.Controls.Add(div); 

Ошибка здесь obj.style.display = 'none'

Я искал онлайн исправления и ничего не работает?

Что я делаю неправильно?

+0

напишите свой HTML. – Sankar

+0

Вы уверены, что 'divChkList' определен? –

+0

это означает, что javascript не может найти divChkList. Я согласен с тем, что вы должны опубликовать свой html – jelliaes

ответ

0

HMTL предусмотрено в вопросе не имеет элемент с ID divChkList

Даже если бы он существовал, правильный способ вызова элемента управления ASP.net будет как этот

var obj = document.getElementById('<%=divChkList.ClientID%>'); 

Это происходит потому, что asp.net не отображает тот же идентификатор, который вы указываете в разметке server control, если только не указывать, чтобы он был статическим.

Смежные вопросы