【问题标题】:Why does passing ClientID to a javascript function pass the whole control?为什么将 ClientID 传递给 javascript 函数会传递整个控件?
【发布时间】:2010-09-25 12:11:47
【问题描述】:

如果我将 ClientID 作为参数传递给 javascript 函数而不包括单引号,它会作为对控件本身的引用传递,然后可以在不首先调用 getElementByID 的情况下使用它。

我在任何地方都找不到这种行为的记录,这是浏览器特定的东西还是 .net 的东西还是什么?

我正在代码隐藏中设置这样的调用...

protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Attributes.Add("onClick", string.Format("showvalue({0})",  TextBox1.ClientID));
        }

我担心这可能不适用于旧版本的 IE。 谢谢。

【问题讨论】:

  • 你真的看过这个生成的HTML吗?一看到源代码,我不认为这种行为有那么神秘。
  • 谢谢,我不认为这很神秘,我只是知道这不是通常的做法,因此担心跨浏览器支持等。

标签: asp.net javascript internet-explorer-7


【解决方案1】:

在生成 JS 代码时在 ID 值周围添加引号,例如: string.Format("showvalue('{0}')", TextBox1.ClientID)

如果没有引号,showValue 会使用您的 ClientID 名称获取全局变量的实例,该名称通常是您的控件呈现的 DOM 元素。

【讨论】:

    【解决方案2】:

    如果你用单引号传递它并使用 getElementByID 它应该适用于所有浏览器,这是“正常”的方式。

    我不确定为什么这种方法会像你说的那样有效。它也适用于 Firefox 吗?

    【讨论】:

      猜你喜欢
      • 2012-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2015-02-06
      相关资源
      最近更新 更多