将类添加到最大值

时间:2015-11-18 11:53:04

标签: javascript jquery

我有这件事。

为了工作,您需要更改选择。

更改选项后,会显示一些值,我会在currentDATA[year]的最大值上添加最高级别。

但问题是,如果我切换到Something #2并返回Something #1,则不会突出显示正确的值。

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

Full demo

有人可以解释一下我做错了吗?

3 个答案:

答案 0 :(得分: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 :(得分:1)

Yor prevVal始终为0.如果您希望代码正常工作,请更改为:

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

但我会建议你改变prevVal名字。构建逻辑是为了不将当前值与先前值进行比较,应将其与之前所有值中的最高值进行比较。

答案 2 :(得分: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');

    }

  }
}


});