joh*_*ohn 3 javascript asp.net string
嗨我试着写一个javascript生成<%= element.ClientID% >其中元素是函数的输入参数之一.我正在尝试写一个变量
var elementName = "<%=" + element + ".clientID%>"
Run Code Online (Sandbox Code Playgroud)
这是一个错误
CS0117:'string'不包含'clientID'的定义
这会引发错误,因为<%%>标记的服务器端处理首先发生.然后,结果以文本形式输出,在这种情况下是JavaScript.因此,服务器看到这个<%=" + element + ".clientID%>并抛出错误,因为它无法理解.假设字符串" + element + "是.clientID调用它的值.
有两种方法可以解决这个问题.
选项1:输出所有ID
对元素的所有可能值进行哈希.如果你有一对以上,这种方法可能不适合你.
var elements = [
coolbutton: '<%= coolbutton.ClientId %>',
simplebutton: '<%= simplebutton.ClientId %>',
otherbutton: '<%= otherbutton.ClientId %>'
];
Run Code Online (Sandbox Code Playgroud)
然后你可以通过这样做得到id:
var elementId = elements[element];
Run Code Online (Sandbox Code Playgroud)
选项2:使用结束
如果你可以使用jQuery,那么有一种方便的方法可以通过ID引用ASP.Net控件.基本上,所有ASP.Net ID都以你在后面的代码中使用的实际变量名结束.所以,如果你有一个名为CoolButton的元素,你可以使用jQuery在javascript中找到它,如下所示:
var element = $('[id$=CoolButton]');
Run Code Online (Sandbox Code Playgroud)
$ =运算符表示结束.因此,它会在页面上找到所有以CoolButton结尾的ID的元素.页面上ASP.Net控件的实际ID会很长,但总会以类似的方式结束NamingContainer$CoolButton.
如果你不能使用jQuery,你可以自己编写这个逻辑.
function findByIdEndsWith(endId) {
//loop through all elements on the page
//if the current element's id ends with endId, return it
//return null;
}
Run Code Online (Sandbox Code Playgroud)
这里将更详细地讨论这种类型的功能.
| 归档时间: |
|
| 查看次数: |
3890 次 |
| 最近记录: |