如何使用 getElementById 和 c# 变量设置动态 id

How to set dynamic id with getElementById with c# variable

本文关键字:设置 动态 id 变量 何使用 getElementById      更新时间:2023-09-26

我正在尝试将document.getElementById与动态变量一起使用。

动态变量将根据从 URL 中的代码隐藏 (c#) 读入的查询字符串进行设置。

因此,例如,这将是它的理想工作方式:

C# 代码隐藏:

string myVar = Request.QueryString[0];
myVar = myVar + "Link";

JavaScript:

<script>
    document.getElementById(myVar)
</script>

关于如何使其工作的任何想法?

你可以简单地将其插入.aspx页面的脚本块中(注意,避免使用"var"作为名称,因为这是Javascript中的保留字):

<script>
    var id = '<%= HttpUtility.JavaScriptStringEncode(Request.QueryString[0]) + "something" %>';
    document.getElementById(id);
</script>

您可以使用 RegisterStartupScript 从代码隐藏将其注入页面:

Page.ClientScript.RegisterStartupScript(this.GetType(), "QueryId", 
    string.Format("<script>var id='{0}';</script>", 
        HttpUtility.JavaScriptStringEncode(Request.QueryString[0]) + "something"
    )
);

问题是你不能只使用 JS 与服务器端通信,JS 是客户端,所以你不会得到你在 ServerSide 中创建的变量。

要获取它们,您需要:

<%= write_the_thing_here %>

对于代码,您将编写:

string someThing = "<%= HttpUtility.HtmlEncode(Request.QueryString[0]) %>";
// now use this someThing in the document..you can use var instead of string
// but not them both..
document.getElementById(someThing); 
// note the semicolon on the end, to close it..

你不应该使用string var因为它们是JavaScript和 ASP.NET 中的数据类型,所以代码可能会感到困惑,认为这到底是什么。

相反,您还可以尝试将隐藏的输入字段编写为

<input type="hidden" name="someThing" value="@Request.QueryString[0]" />

然后使用它来动态地做你想做的事情。如果您确实想使用来自服务器的 ID,这可能是执行此操作的简单方法。

对不起jQuery好友:

var someThinge = $('input[type="hidden"]').val();

然后,继续你的工作!

Alexei Levenkov的帮助说明:JavaScript中的分号是可选的。它们的主要用途是区分由混淆器/最小化器(工具或人员)或普通开发人员编写的代码是否:)