jQuery:根据点击增加变量值

时间:2011-08-10 12:19:22

标签: jquery

我有以下jQuery代码:

var letter_a = 0;
var letter_b = 0;
var letter_c = 0;

$(".abc li a").click(function ()
{
    var selected = $(this).hasClass('selected');
    $(this).closest('ul.abc').find('li a').removeClass('selected');
    if (!selected)
    {
        $(this).addClass('selected');
    }

    if ($(this).hasClass("a"))
    {
        letter_a++;
    }
    else if ($(this).hasClass("b"))
    {
        letter_b++;
    }
    else if($(this).hasClass("a"))
    {
        letter_c++;
    }
});

当一个人点击如下链接时会发生什么:<a class="a">Option A</a>它会将变量增加一个,依此类推,依此类推。但是因为用户可以取消选择选项并改变他们的想法,如果他们选择了不同的答案或取消选择,我还需要减少选择。

我该怎么做?

由于

3 个答案:

答案 0 :(得分:4)

假设这使用与您的其他问题相同的HTML,我认为每次选择答案时,只需对所有选定项目进行计数可能更容易:

var scoreA = 0, scoreB = 0, scoreC = 0;

$(".abc li a").click(function () {
    var t = $(this);
    var ul = t.closest('ul.abc');
    var selected = t.hasClass('selected');
    ul.find('li a').removeClass('selected');
    if (!selected)
        t.addClass('selected');

    calculateScores();
});

function calculateScores()
{
    scoreA = $('a.a.selected').length;
    scoreB = $('a.b.selected').length;
    scoreC = $('a.c.selected').length;

    alert("A: " + scoreA + ", B: " + scoreB + ", C: " + scoreC);
}

http://jsfiddle.net/huW4k/2/

答案 1 :(得分:1)

你打算怎么处理总数,我想知道选择方框的长度是否更容易

 $(.a.selected).length;
 $(.b.selected).length;
 $(.c.selected).length;

答案 2 :(得分:0)

这样做:

 var letter_a = 0;
 var letter_b = 0;
 var letter_c = 0;

 $(".abc li a").click(function ()
{
var selected = $(this).hasClass('selected');
$(this).closest('ul.abc').find('li a').removeClass('selected');
if (!selected)
{
    $(this).addClass('selected');
}

if ($(this).hasClass("a"))
{
    letter_a++;
    if(letter_b != 0){
      letter_b--;}

    if(letter_c != 0){
      letter_c--;}
}
else if ($(this).hasClass("b"))
{
    letter_b++;

    if(letter_a != 0){
      letter_a--;}

    if(letter_c != 0){
      letter_c--;}
}
else if($(this).hasClass("a"))
{
    letter_c++;

    if(letter_a != 0){
      letter_a--;}

    if(letter_b != 0){
      letter_b--;}
}
});