javascript - JavaScript 函数可以修改 ASP.NET 服务器上运行的元素吗?

标签 javascript asp.net

为了测试,我创建了一个按钮,单击该按钮将隐藏文本框。按下按钮的 javascript 如下所示:

function showCommentBox() {
    var el = document.getElementById('replyBox');
    el.setAttribute("style", "display:none;");
    return false;
}

asp 代码如下所示:

<textarea  id="replyBox" runat="server" class="replyBox"></textarea>
<asp:Button runat="server" id="replyBtn" onClientClick="return showCommentBox();" class="replyBtnClass" Font-Bold="true" Text="Reply"/>

似乎每当我尝试修改服务器上运行的元素时,它都会导致回发。我的逻辑有问题还是这根本不可能?

最佳答案

如果您查看服务器控件生成的 ID,您会发现它与您设置的不同。您设置的 id 是代码隐藏 ID。当页面呈现时,该元素被分配其 ClientID 。这就是您遇到问题的原因。

你有两个选择:

  1. 设置ClientIDMode到“静态”。这会将元素的 id 保留为您设置的值。请确保仅当您只有一个具有此 ID 的元素时才执行此操作。否则你的 JavaScript 将会开始表现得很奇怪。

  2. 动态设置 javascript 的 id。像这样:

    document.getElementById('<% replyBox.ClientID %>');

这会将呈现的服务器控件的 ClientID 直接注入(inject)到 JavaScript 中。注意:只有当 javascript 位于 aspx 页面中时,这才有效。如果将 javascript 移至 js 文件,则此操作将不起作用。

关于javascript - JavaScript 函数可以修改 ASP.NET 服务器上运行的元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16223541/

相关文章:

c# - 使用授权属性清除 session ?

javascript - 如何在 javascript 中获取静态公共(public)文件夹中的文件列表?

javascript - 词缀在 Bootstrap 4(alpha)中不起作用

c# - 如何处理所有 Controller 上的空模型 aspnet core c#

javascript - 如何取消选中 jquery 中最接近的标题复选框 - 具有同一类的多行中的多标题

asp.net - 如何在 N 层架构中维护事务

jquery - 如何在 JQuery 数据表中显示自定义处理消息

javascript - typescript 类型 boolean 不能分配给 void

javascript - 哪些版本的 IE 使用标准事件模型?

javascript - 使用 for 循环将 javascript 变量插入 json 编码的 php 变量