javascript - 如何将 getElementById 用于在代码隐藏中创建的控件?

标签 javascript asp.net dom-events

我正在尝试在客户端创建的表 td 上使用 onmouseoveronmouseout 事件,以便当用户将鼠标悬停在表单元格上时,面板变得可见,当他们将鼠标移开时,面板变得不可见。

<table>
    <tr>
        <td onmouseover="ToggleVisibility('FileHeader', true);" onmouseout="ToggleVisibility('FileHeader', false);">
            Some content goes here.                         
        </td>
    </tr>
</table>

onmouseoveronmouseout 调用以下 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/

相关文章:

javascript - 过滤 js 中长度小于 < 50 个字符的内容

jsf - PrimeFaces 自动完成 : itemSelect versus change events

javascript - 使用 typescript@2.0.3 从 "typings"迁移到 "@types"

c# - div 从 asp.net 中的代码后面添加重定向和背景图像

asp.net - 通过http将数据从服务器推送到浏览器

c# - Asp.NET 服务器控件回发

javascript - Node.js 和 Express : Sequential execution flow one mongodb query request after another

javascript - 如何按字符串属性的长度对mongodb查找结果进行排序?

javascript - VueJS 阻止非事件浏览器选项卡上的事件

javascript - bootstrap Accordion 或隐藏和显示在 jQuery 中动态创建的元素下不起作用