2011-08-10 45 views
0

增量變量的值,我有以下的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>它將由一個遞增變量等等等等。但是,因爲用戶可以取消選擇並改變他們的想法,所以如果他們選擇了不同的答案或取消選擇,我也需要減少選項。

我該怎麼做?

感謝

+2

可以遞減變量,如果人選擇其他選項 '如果($(本).hasClass( 「A」)){ letter_a ++; letter_b--; letter_c--; }' 您必須在所有情況下都這樣做。 –

+0

如果這是第一個問題,那麼字母b在0呢?它會變成負值嗎? – Cameron

+1

顯然,當你減少變量時,你必須檢查它是否不爲0,然後遞減'if(letter_b!= 0){letter_b - ;}' –

回答

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/

+0

我喜歡這個:)謝謝 – Cameron

+0

+1與細節相同的想法 – mcgrailm

1

你打算用總計做,我不知道是否會更容易先手的選擇框

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

長度不是一個函數:D除此之外,與我相同的想法+ 1 :) –

+0

@Richard D好趕上,還沒有喝過咖啡8 ^) – mcgrailm

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--;} 
} 
}); 
+0

這有問題,如果該值不是0,那麼它會減少它,並且在問題之間值會丟失。在這種情況下,長度效果更好。感謝您的幫助。 – Cameron