我正在尝试在客户端创建的表 td 上使用 onmouseover
和 onmouseout
事件,以便当用户将鼠标悬停在表单元格上时,面板变得可见,当他们将鼠标移开时,面板变得不可见。
<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
的“id”是在 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
包含实际内容(带文本的标签等),为简单起见,我将其省略)。
当此面板在客户端创建时,我的 ToggleVisibility
函数工作正常,但当面板在代码后面创建时,getElementById
返回 null。我是 JavaScript 的新手,非常感谢任何帮助。
最佳答案
Asp.net 将自动命名所有 runat=server 对象的 id。您可以使用 clientId 属性检索损坏的 ID。
关于javascript - 如何将 getElementById 用于在代码隐藏中创建的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3337094/