为什么将ClientID传递给javascript函数会传递整个控件?

时间:2008-12-05 11:39:14

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

我不确定为什么这种方法可以像你说的那样工作。它在Firefox中也有效吗?