我想在客户端创建的表td上使用onmouseover和onmouseout事件,以便当用户鼠标悬停在表格单元格上时,面板变得可见,并且当它们被鼠标移出时,面板变得不可见。如何将getElementById用于在代码后面创建的控件?
<table>
<tr>
<td onmouseover="ToggleVisibility('FileHeader', true);" onmouseout="ToggleVisibility('FileHeader', false);">
Some content goes here.
</td>
</tr>
</table>
onmouseover和onmouseout调用以下在客户端定义的javascript函数。
<script language="javascript" type="text/javascript">
function ToggleVisibility(id, visible) {
var content = document.getElementById(id);
if (content != null) {
if (visible) {
content.style.display = "block";
} else {
content.style.display = "none";
}
}
}
</script>
“标识”是我传递中的getElementById是在Page_Load期间在代码中创建后面的面板控件的ID。小组添加到被在客户端定义像这样一个不同的表:
<asp:Table ID="HelpTable" runat="server"></asp:Table>
下面是创建的面板和在代码添加到表中后面:
TableRow row = new TableRow();
HelpTable.Rows.Add(row);
TableCell cell = new TableCell();
row.Cells.Add(cell);
Panel pFileHeader = new Panel();
pFileHeader.ID = "FileHeader";
pFileHeader.Style.Add("Display", "none");
cell.Controls.Add(pFileHeader);
(所述的面板, pFileHeader包含了我为了简单而忽略的实际内容(带有文本的标签等)。
当在客户端创建此Panel时,我的ToggleVisibility函数可以正常工作,但是当Panel在代码后面创建时,getElementById将返回null。我对JavaScript非常陌生,并希望得到任何帮助。谢谢!
我明白你的问题,因为'getElementById返回null',Element的创建可能会有延迟的问题/机会。我不确定这个(只是猜测)。任何我需要查看'Demo'的方法。你可以发表一个链接到你的网页? – 2010-07-26 17:49:22