使用addAttributes更改文本框的颜色

时间:2011-10-07 06:09:23

标签: javascript-events

我正在使用addAttributes来更改表单上存在的所有文本框的颜色,我正在写:

If Not IsPostBack Then
   For Each CTL In Page.Controls
      if TypeOf CTL Is TextBox Then
         Dim Txt = New TextBox

         Txt.Attributes.Add("onMouseOver", "javascript:this.style.background='yellow';")
         Txt.Attributes.Add("onMouseOut", "javascript:this.style.background='white';")
      End If
   Next
End If

页面上没有错误,但它不起作用..有没有人可以提供帮助?

1 个答案:

答案 0 :(得分:0)

这里有两个问题。

首先,每次New TextBox创建一个新的TextBox。在创建TextBox并设置属性之后,您似乎只是丢弃它而不实际使用它。您实际上应该直接使用CTL而不是尝试创建新实例Txt

第二个问题是,您只是尝试为页面的直接子控件设置属性。假设您的页面有一些表格或面板,而TextBox就在那些页面或面板中。你将无法访问它们。您需要递归遍历控制树并根据需要设置属性。

代码看起来像这样:

Protected Sub SetTextBoxColor(ByVal parentCtl As Control)
    For Each ctl In parentCtl.Controls
        If TypeOf ctl Is TextBox Then
            ctl.Attributes.Add("onMouseOver", "javascript:this.style.background='yellow';")
            ctl.Attributes.Add("onMouseOut", "javascript:this.style.background='white';")
        End If
        SetTextBoxColor(ctl)
    Next
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        SetTextBoxColor(Page)
    End If
End Sub