2016-04-28 33 views
0

我努力改变文本的颜色,当它被点击但没有成功。 question有一个标签,四个标签options,一个标签correct answer和一个标签explanation如何在使用jquery点击文本时更改文本的颜色?

我试图当任何option用户点击,那么它应该与correct answer匹配,并更改选项,也就是文本的颜色时,答案是正确的文字颜色应该变成绿色,否则颜色应开启变红。

但是,当我点击任何option它只会变成红色。正确的option应该变成绿色,但它变成了红色。我找不出原因。 看看我的代码。告诉我我错在哪里以及解决方案是什么。

的.aspx: -

<%@ Page Title="" Language="C#" MasterPageFile="~/Student/StudentPage.master" AutoEventWireup="true" CodeFile="studpractice.aspx.cs" Inherits="Student_studpractice" %> 
 

 
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
 
</asp:Content> 
 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
 

 
    <script type="text/javascript"> 
 

 

 
     $(function() { 
 

 
      $(".optionclass").click(function() { 
 
       var $thisoption = $(this); 
 
       var $corrans = $(".correctans"); 
 

 
       if ($thisoption.text() == $corrans.text()) { 
 
        $thisoption.css("color", "green"); 
 
       } else { 
 
        $thisoption.css("color", "red"); 
 
       } 
 
      }); 
 

 
     }); 
 

 

 
    </script> 
 
    <div> 
 
     <div id="tabs"> 
 
    <ul> 
 
     <li><a href="#tabs-1">Reasoning</a></li> 
 
     <li><a href="#tabs-2">Quantitative Aptitude</a></li> 
 
     <li><a href="#tabs-3">English</a></li> 
 
     <li><a href="#tabs-4">Mathematics</a></li> 
 
     <li><a href="#tabs-5">Computer Concepts</a></li> 
 
    </ul> 
 
    <div id="tabs-1"> 
 
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" width="100%"> 
 
    <Columns> 
 
     <asp:TemplateField> 
 
      <ItemTemplate> 
 

 
     <asp:Panel ID="Panel1" runat="server"> 
 

 
      <asp:Label ID="Label1" runat="server" Text='<%#Eval("Question") %>'></asp:Label> 
 
      <br /> 
 
      <br /> 
 
      <br /> 
 
      <span>A-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label2" runat="server" Text='<%#Eval("Option1")%>' ></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      <span>B-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label3" runat="server" Text='<%#Eval("Option2")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      <span>C-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label4" runat="server" Text='<%#Eval("Option3")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      <span>D-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label5" runat="server" Text='<%#Eval("Option4")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      &nbsp;&nbsp; 
 
      <asp:Button class="panelButton" runat="server" Text="Show Answer" ClientIDMode="Static" /> 
 
      <br /> 
 

 
      <asp:Panel ID="anspanel" class="AnswerPanel" runat="server" ClientIDMode="Static"> 
 

 
       <span>Correct Answer is :-</span><asp:Label class="correctans" ID="Label6" runat="server" Text='<%#Eval("CorrectAns")%>'></asp:Label> 
 
       <br /> 
 
       <br /> 
 
       <asp:Label ID="Label7" runat="server" Text='<%#Eval("Explanation")%>'></asp:Label> 
 

 

 
      </asp:Panel> 
 

 

 
     </asp:Panel> 
 
     <br /> 
 
     <br /> 
 

 
       </ItemTemplate> 
 
     </asp:TemplateField> 
 
    </Columns> 
 
</asp:GridView> 
 
    </div> 
 
    <div id="tabs-2"> 
 
     
 
     <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false" > 
 
    <Columns> 
 
     <asp:TemplateField> 
 
      <ItemTemplate> 
 

 
     <asp:Panel ID="Panel1" runat="server"> 
 

 
      <asp:Label ID="Label1" runat="server" Text='<%#Eval("Question") %>'></asp:Label> 
 
      <br /> 
 
      <br /> 
 
      <br /> 
 
      <span>A-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label2" runat="server" Text='<%#Eval("Option1")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      <span>B-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label3" runat="server" Text='<%#Eval("Option2")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      <span>C-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label4" runat="server" Text='<%#Eval("Option3")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      <span>D-</span><a href="javascript:void(0);" style="text-decoration:none;"> <asp:Label class="optionclass" ID="Label5" runat="server" Text='<%#Eval("Option4")%>'></asp:Label></a> 
 
      <br /> 
 
      <br /> 
 
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
 
      <asp:Button class="panelButton" runat="server" Text="Show Answer" ClientIDMode="Static" /> 
 
      <br /> 
 

 
      <asp:Panel ID="anspanel" class="AnswerPanel" runat="server" ClientIDMode="Static"> 
 

 
       <span>Correct Answer is :-</span><asp:Label class="correctans" ID="Label6" runat="server" Text='<%#Eval("CorrectAns")%>'></asp:Label> 
 
       <br /> 
 
       <br /> 
 
       <asp:Label ID="Label7" runat="server" Text='<%#Eval("Explanation")%>'></asp:Label> 
 

 

 
      </asp:Panel> 
 
     </asp:Panel> 
 
     <br /> 
 
     <br /> 
 
       </ItemTemplate> 
 
     </asp:TemplateField> 
 
    </Columns> 
 
</asp:GridView> 
 

 
    </div> 
 
    <div id="tabs-3"> 
 
     Tab 3 Content 
 
    </div> 
 
    <div id="tabs-4"> 
 
     Tab 4 Content 
 
    </div> 
 
    <div id="tabs-5"> 
 
     Tab 5 Content 
 
    </div> 
 
</div> 
 
<input type="button" id="btnPrevious" value="Previous" style = "display:none"/> 
 
<input type="button" id="btnNext" value="Next" /> 
 

 

 
     </div> 
 

 
</asp:Content>

+0

可以请你把你的html代码这里。 –

+0

你首先必须知道答案是否正确。然后改变颜色,这不应该很难。 – Ionut

+1

只选择.correctans不是全部,它显然将它们全部设置为红色。 –

回答

2

那么什么错误,你正在做的是你选择所有.correctans,哪些是你应该做的是选择具体的只有这个问题.correctans

+0

我在这一行修改了'var $ corrans = $(this).parent()。find(“。AnswerPanel”)。children(“.correctans”);'....然后也出现同样的问题。 –

0

$(".correctans")更改为$(".correctans")[0]$(".correctans").first()以获取单一的correctans元素而不是集合。

编辑:

既然你的页面上的多个问题和答案,用此来获取问题的correctans他们回答:

var $corrans = $(this).parent().find('.correctans:first');

+0

我使用了一个包含问题,四个选项,correctAnswer和解释的面板,并且该面板位于gridview中...因此,您的解决方案仅适用于GridView的第一行。 –