【问题标题】:.net javascript master pages garbling element name is there a way around it? [duplicate].net javascript母版页乱码元素名称有没有办法解决? [复制]
【发布时间】:2009-11-18 02:02:14
【问题描述】:

可能重复:
Any way to prevent master pages from changing element IDs?

我有一个使用母版页的 .net 2.0 网页。有问题的页面上有一个表单,我正在尝试调用其中一个子元素。表单元素名称为:

"contact_label" - its an asp:Label

但是当我查看来源时,我得到的名字是:

"ctl00_ContentPlaceHolder1_contact_label"

有没有办法解决这个“名字乱码”?

我已经读到我应该能够像这样引用它:

document.getElementById("<%= contact_label.ClientID %>")

但这对我也不起作用......

这都是带有 javascript 的 .net 2.0。

谢谢,R.

【问题讨论】:

  • 在 ASP 端,您应该能够设置控件的“ClientID”属性。除非您也可以使用 CssClass 属性为其命名。它们都应该可以在 xml 标记或后面的代码中访问。

标签: .net javascript


【解决方案1】:

如果您想使用 javascript,您可以在执行任何其他 javascript 调用之前为您的 javascript 设置一些全局变量以使用该设置。我更喜欢这种方法,因为它减少了您在各处获取控件 ID 所需的内联代码量,并将所有内容集中在一个位置。

所以在你的脚本代码的开头做:

// In your javascript
var myTextBoxId = "<%= myTextBox.ClientID %>";
var myButtonId = "<%= myButton.ClientID %>";

然后在您的 javascript 代码中,只要您需要使用它,您就可以这样做:

var myTextBox = document.getElementById(myTextBoxId);
var myButton = document.getElementById(myButtonId);

使用 Jquery 将使这看起来更清晰。例如获取文本框值:

var myTextBoxValue = $("#" + myTextBoxId).val();
// or if you dont want to use the initializers to store the ids
var myTextBoxValue = $("#" + "<%= myTextBox.ClientID %>").val();

【讨论】:

    【解决方案2】:

    您可以在 id 上使用jQuery 及其“attribute ends with”功能,例如:

    var item = $("span[id$=contact_label]");
    var text = item.text();
    

    【讨论】:

    • 顺便说一句,这在独立的 JS 代码中运行良好,并且您将获得缓存优势。如果您使用 表单,您必须在生成的 HTML 中内联 标记。
    【解决方案3】:

    建议给你的代码行

    document.getElementById("<%= contact_label.ClientID %>")
    

    应该按照你的要求去做。

    当您查看页面源时,您会看到什么代替了“”

    javascript 代码是在 web 表单还是 MasterPage 中?

    还可以尝试在 javascript 中使用单引号而不是双引号

     document.getElementById('<%= contact_label.ClientID %>')
    

    【讨论】:

      【解决方案4】:

      如果你使用runat="server",元素的id必须是唯一的,document.getElementById("<%= contact_label.ClientID %>"); 必须得到 elementbyId。

      【讨论】:

        猜你喜欢
        • 2021-01-11
        • 1970-01-01
        • 2020-09-27
        • 1970-01-01
        • 2011-06-27
        • 1970-01-01
        • 2019-11-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多