查找文本,然后有条件地更改另一个文本

时间:2012-07-16 20:03:10

标签: javascript jquery asp.net html

我正在使用asp:Repeater,我需要一些帮助。在我的表格中,我有<td&gt;我想改变颜色,当且仅当它的右边的<td>包含某个文本时。

这是代码的样子:

 <asp:Repeater ID="myRepeater" runat="server">
        <HeaderTemplate>
            <div id="myDiv">
                <table id="table">
                    <thead>
                        <tr>
                            <th class="class">
                                Row 1
                            </th>
                            <th class="class">
                                Row 2
                            </th>
                            <th class="class">
                                Row 3                               
                            </th>
                        </tr>
                    </thead>
                    <tbody>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td class="myClass">
                </td>
                <td class="changeMyColor!">
                </td>
        <td class="lookAtMe">
         certainText
        </td>
    </ItemTemplate>

在这种情况下,如果包含“certainText”,我想给出背景颜色。对我而言,这对于转发器中的每个项目都必须发生这种情况也很困难。

我在jsfiddle上找到了this,但是在我的解决方案中没有运气使用它来实现。

感谢您的帮助!

4 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function()
{
  $('td').each(function(index) 
  {
    if($(this).text().indexOf("certainText") >= 0 )
    {
      $(this).css('background-color','red');
    }
  });
});

答案 1 :(得分:1)

试试这个例子:

http://www.c-sharpcorner.com/blogs/7592/change-the-forecolor-of-an-item-in-a-repeater-based-on-the-s.aspx

您可以对您使用的sql适配器类型使用 foreach ,并验证调用 IF

的方法
  

dt.NewRow();

,在示例中,因此验证每个字段并为其指定所需的颜色

答案 2 :(得分:1)

我不知道你的DataSource是什么,但你可以改变下面的代码来实现ASP.NET方式:

<强>标记:

 <asp:Repeater ID="myRepeater" runat="server"                 
           OnItemDataBound="myRepeater_ItemDataBound">
  ................
 <ItemTemplate>
        <tr>
            <td class="myClass" id="td1" runat="server">
            </td>
            <td class="changeMyColor!" id="td2" runat="server">
            </td>
    <td class="lookAtMe">
     <asp:label id="lookAtMe" Text="<%#Eval("LookAtMe")%>" />
    </td>
 </ItemTemplate>

<强>代码隐藏:

  protected void myRepeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e) {

      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
      {
         YourDataObject data = (YourDataObject)e.Item.DataItem;
         HtmlGenericControl td1 = e.Item.FindControl("td1") as HtmlGenericControl;
         HtmlGenericControl td1 = e.Item.FindControl("td2") as HtmlGenericControl;           

         if (data.YourProperty == "CertainText") {                                 
            td1.Attributes.Add("class","whateverClass");
            td2.Attributes.Add("class","whateverClass2");
         }

      }
   }    

答案 3 :(得分:1)

jQuery(document).ready(function($) {

  //Find <td>'s in your table id="table" which contains text 'certainText'
  $('#table tbody td.lookAtMe:contains(certainText)').each(function() {

    //You said the test was for the <td> to the right of it
    //which means .prev() will return the <td> to the left
    //select that <td> and change its color
    $(this).prev().css({'background-color':'#a90000'});
  });
});