Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将类添加到最大值_Javascript_Jquery - Fatal编程技术网

Javascript 将类添加到最大值

Javascript 将类添加到最大值,javascript,jquery,Javascript,Jquery,我有这个东西 要工作,您需要更改选择。 更改选项后,将显示一些值,我将在currentDATA[year]的最大值上添加最高的类 但问题是,如果我切换到Something#2并返回到Something#1,正确的值不会突出显示 if(value > prevVal) { $el.parent().find('span').removeClass('highest'); $el.addClass('highest'); } 有人能解释一下我做错了什么吗

我有这个东西

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

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

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

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


有人能解释一下我做错了什么吗?

您必须一直跟踪最高值:

$('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');
});

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

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

但我建议你改名。构建逻辑时,不应将当前值与先前值进行比较,而应将其与所有先前值中的最高值进行比较。

首先,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');

    }

  }
}


});