2015-11-18 28 views
1

我有這個東西。添加類到最大值

爲了工作,您需要更改選擇。

在您更改選項後,會顯示一些值,我將在currentDATA[year]的最大值上添加最高的類。

但事情是如果我切換到Something #2並返回Something #1,正確的值不會突出顯示。

if(value > prevVal) { 
    $el.parent().find('span').removeClass('highest'); 
    $el.addClass('highest');   
} 

Full demo

有人可以解釋我什麼,我做錯了什麼?

回答

1

首先,prevVal總是爲零。所以設置它可以使其工作一年。

接下來,您需要將preVVal重置爲零,以便每個年份都能找到它自己的最大值。

$('select').on('change', function() { 

var currentDATA = myJSON[$(this).val()]; 

for(var year in currentDATA){ 
    var prevVal = 0; 
    console.log(year); 
    for(var val in currentDATA[year]) { 

    var value = currentDATA[year][val]; 
    var $el = $('.' + val + '_' + year); 

    $el.html(value); 

    if(value > prevVal) { 
     prevVal = value; 
     $el.parent().find('span').removeClass('highest'); 
     $el.addClass('highest'); 

    } 

    } 
} 


}); 
1

你必須保持跟蹤的最高值:

$('select').on('change', function() { 

    var currentDATA = myJSON[$(this).val()]; 
    var highestVal = 0; 
    var highestValObj; 

    for(var year in currentDATA){ 

     for(var val in currentDATA[year]) { 

     var value = currentDATA[year][val]; 
     var $el = $('.' + val + '_' + year); 

     $el.html(value); 

     if(value > highestVal) { 
      highestVal = value; 
      highestValObj = $el; 

     } 

     } 
    } 

     $('.highest').removeClass('highest'); 
      highestValObj.addClass('highest'); 
}); 
1

尤爾prevVal始終爲0更改爲,如果你希望你的代碼工作:

if(value > prevVal) { 
    prevVal = value; 
    $el.parent().find('span').removeClass('highest'); 
    $el.addClass('highest'); 
} 

但我會建議你改變PREVVAL名稱。該邏輯的構建使您不應該將當前值與以前的值進行比較,您應該將其與以前所有值中的最高值進行比較。